首頁 後端開發 php教程 經典排序演算法 - 冒泡排序Bubble sort

經典排序演算法 - 冒泡排序Bubble sort

Jul 29, 2016 am 09:03 AM
height margin padding px quot

经典排序算法 - 冒泡排序Bubble sort

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大或最小的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

例子为从小到大排序,

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

第二次两两比较,6 > 4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

第三次两两比较,6 > 1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

第四次两两比较,6 > 5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第五次两两比较,6 < 9不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)

第一次两两比较2 < 4不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二次两两比较,4 > 1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第四次两两比较,5 < 6不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三趟排序(外循环)

第一次两两比较2 > 1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第二次两两比较,2 < 4不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

贴上自己写的代码:
function bubble_sort($arr=array(1,43,54,62,21,66,32,78,36,76,39))
{  
    $len = count($arr);
    //该层循环控制 需要冒泡的轮数
    for($i=1; $i<$len; $i++)
    { //该层循环用来控制每轮 冒出一个数 需要比较的次数
        for($k=0; $k<$len-$i; $k++)
        {
           if($arr[$k] > $arr[$k+1])
            {
                $tmp = $arr[$k+1];
                $arr[$k+1] = $arr[$k];
                $arr[$k] = $tmp;
                @$arr['cly_times'] +=1; //设置循环结束
            }
        }
        if ($arr['cly_times'] == $arr['cly_times']-1) {
        	return $arr;
        }
    }
    return $arr;
}
登入後複製

以上就介紹了經典排序演算法 - 冒泡排序Bubble sort,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CSS佈局單位的演變與應用:從像素到根據根元素字體大小的相對單位 CSS佈局單位的演變與應用:從像素到根據根元素字體大小的相對單位 Jan 05, 2024 pm 05:41 PM

從px到rem:CSS佈局單位的演變與應用引言:在前端開發中,我們經常需要用到CSS來實現頁面佈局。在過去的幾年間,CSS佈局單位也經歷了演變和發展。最開始我們使用的是像素(px)作為單位來設定元素的大小和位置。然而,隨著響應式設計的興起和行動裝置的普及,像素單位逐漸暴露出一些問題。為了解決這些問題,新的單位rem應運而生,並逐漸廣泛應用於CSS佈局中。一

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

margin在css中什麼意思 margin在css中什麼意思 Dec 18, 2023 am 10:30 AM

在CSS中,margin是用來設定元素外邊距的屬性。外邊距是元素邊框與元素內容之間的空間。 margin可以接受以下幾種值:1、單獨的值:例如,margin: 10px; 將所有四個外邊距(上、右、下、左)都設為10像素;2、兩個值:例如,margin : 10px 20px; 將上下外邊距設定為10像素,左右外邊距設定為20像素;3、四個值等等。

CSS 邊界屬性詳解:padding,margin 和 border CSS 邊界屬性詳解:padding,margin 和 border Oct 21, 2023 am 11:07 AM

CSS邊界屬性詳解:padding,margin和borderCSS是一種用於控制和佈局網頁元素的樣式表語言。在網頁設計中,邊界屬性是其中一個非常重要的部分。本文將詳細介紹CSS中邊界屬性的使用方法,並提供具體的程式碼範例。 padding(內邊距)padding屬性用於設定元素的內邊距,即元素內容和元素邊界之間的空間。我們可以用正數或百分比值來設定內邊距

CSS 維度屬性詳解:height 與 width CSS 維度屬性詳解:height 與 width Oct 21, 2023 pm 12:42 PM

CSS維度屬性詳解:height和width在前端開發中,CSS是一種強大的樣式定義語言。其中,height和width是兩個最基本的維度屬性,用來定義元素的高度和寬度。本文將對這兩個屬性進行詳細解析,並提供具體的程式碼範例。一、height屬性height屬性用來定義元素的高度。可以使用像素(pixel)、百分比(percentage)或

CSS 文字排版屬性詳解:text-overflow 和 white-space CSS 文字排版屬性詳解:text-overflow 和 white-space Oct 20, 2023 am 11:19 AM

CSS文字排版屬性詳解:text-overflow和white-space在網頁設計中,文字排版是一個非常重要的環節,透過合理的排版可以讓文字更易讀、更美觀。 CSS提供了一些屬性來控製文字的顯示方式,其中包括text-overflow和white-space。本文將詳細介紹這兩個屬性的用法和範例程式碼。一、text-overflow屬性text

margin屬性不影響行內元素 margin屬性不影響行內元素 Feb 18, 2024 pm 04:36 PM

Margin對於行內元素的效果是不同於區塊級元素的。在行內元素中,margin屬性只會對垂直方向的上下外邊距起作用,而不會對水平方向的左右外邊距起作用。舉個例子,在HTML中有一個段落元素,我們可以為其設定一些樣式,並觀察margin屬性對其的效果。 HTML程式碼如下所示:

css中的padding屬性怎麼用 css中的padding屬性怎麼用 Dec 07, 2023 pm 02:58 PM

在CSS中,padding屬性用於設定元素的內邊距。這意味著它定義了元素內容和其邊框之間的空間。基本語法為“padding: value;”。

See all articles