經典排序演算法 - 冒泡排序Bubble sort
经典排序算法 - 冒泡排序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教程有興趣的朋友有所幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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