91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web開發中冒泡排序是什么意思

發布時間:2022-01-17 11:17:59 來源:億速云 閱讀:160 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關web開發中冒泡排序是什么意思,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

冒泡排序介紹    

冒泡排序一種簡單的排序算法。它會遍歷若干次要排序的數列,每次遍歷時,它都會從前往后依次的比較相鄰兩個數的大小;如果前者比后者大,則交換它們的位置。這樣,一次遍歷之后,最大的元素就在數列的末尾! 采用相同的方法再次遍歷時,第二大的元素就被排列在最大元素之前。重復此操作,直到整個數列都有序為止!

冒泡排序圖解    

下面以數列{20,40,30,10,60,50}為例,演示它的冒泡排序過程(如下圖)。

web開發中冒泡排序是什么意思

我們首先分析第一趟排序:

  • 當i=5,j=0時,a[0]<a[1]。此時,不做任何處理!

  • 當i=5,j=1時,a[1]>a[2]。此時,交換a[1]和a[2]的值;交換之后,a[1]=30,a[2]=40。

  • 當i=5,j=2時,a[2]>a[3]。此時,交換a[2]和a[3]的值;交換之后,a[2]=10,a[3]=40。

  • 當i=5,j=3時,a[3]<a[4]。此時,不做任何處理!

  • 當i=5,j=4時,a[4]>a[5]。此時,交換a[4]和a[5]的值;交換之后,a[4]=50,a[3]=60。

第一趟排完之后,最大元素60移到數組最后了,也就是a[5]此時為數組中最大的元素,再進行第二趟排序的時候,只需按照上面的方法排前面5個元素就可以了。這樣:

第2趟排序完之后,數列中a[4]、a[5]是有序的。
第3趟排序完之后,數列中a[3]、a[4]、a[5]是有序的。
第4趟排序完之后,數列中a[2]、[3]、a[4]、a[5]是有序的。
第5趟排序完之后,數列中a[1]、a[2]、[3]、a[4]、a[5]是有序的。

第5趟排序之后,整個數列也就是有序的了。

冒泡排序算法實現    

根據上面流程,不難寫出冒泡排序的代碼實現,此處是按升序排列。

void bubble_sort(int a[], int n)
{int i,j;for (i=n-1; i>0; i--){// 將a[0...i]中最大的數據放在末尾for (j=0; j<i; j++){if (a[j] > a[j+1])swap(a[j], a[j+1]);}}
}

其實觀察上面例子冒泡排序的流程圖,第3趟排序之后,數據已經是有序的了;第4趟和第5趟并沒有進行數據交換。因此可以對冒泡排序進行優化,使它效率更高一些:添加一個標記,如果一趟遍歷中發生了交換,則標記為true,否則為false。如果某一趟沒有發生交換,說明排序已經完成,退出。優化后的代碼如下:

void bubble_sort2(int a[], int n)
{int i,j;int flag;     // 標記一趟是否發生交換for (i=n-1; i>0; i--){flag = 0;     // 初始化標記為0// 將a[0...i]中最大的數據放在末尾for (j=0; j<i; j++){if (a[j] > a[j+1]){swap(a[j], a[j+1]);flag = 1; //發生交換,設flag為1}}if (flag==0)break; // 若無交換,說明數列已有序}
}
冒泡排序時間空間復雜度    

冒泡排序的時間復雜度是O(N2):假設被排序的數列中有N個數。遍歷一趟的時間復雜度是O(N),需要遍歷多少次呢?N-1次!因此,冒泡排序的時間復雜度O(N2)。

冒泡排序是穩定的算法:它滿足穩定算法的定義;所謂算法穩定性指的是對于一個數列中的兩個相等的數a[i]=a[j],在排序前,a[i]在a[j]前面,經過排序后a[i]仍然在a[j]前,那么這個排序算法是穩定的。

關于“web開發中冒泡排序是什么意思”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

web
AI

贵南县| 宁陕县| 宣化县| 永昌县| 淮安市| 阜南县| 邢台市| 普定县| 湖口县| 城市| 新野县| 新巴尔虎右旗| 四川省| 海城市| 临澧县| 宜君县| 九江县| 云南省| 东乌| 长子县| 溧水县| 老河口市| 大邑县| 凤庆县| 江安县| 株洲市| 彝良县| 柘城县| 即墨市| 盖州市| 灵璧县| 乳源| 开阳县| 金阳县| 都江堰市| 宁强县| 岳池县| 乌拉特后旗| 高阳县| 赣州市| 扶风县|