日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > C語言與CPP編程
[導讀]冒泡排序簡介冒泡排序是因為越小的元素會經(jīng)由交換以升序或降序的方式慢慢浮到數(shù)列的頂端,就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名冒泡排序。復雜度與穩(wěn)定性思路原理以順序為例從第一個元素開始一個一個的比較相鄰的元素,如果第一個比第二個大即a[1]>a[2],就彼此交換。從...



冒泡排序

簡介

冒泡排序是因為越小的元素會經(jīng)由交換以升序或降序的方式慢慢到數(shù)列的頂端,就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名冒泡排序

復雜度與穩(wěn)定性

思路原理

以順序為例

  1. 從第一個元素開始一個一個的比較相鄰的元素,如果第一個比第二個大即a[1]>a[2],就彼此交換。

  2. 從第一對到最后一對,對每一對相鄰元素做一樣的操作。此時在最后的元素應該會是最大的數(shù),我們也稱呼一遍這樣的操作一趟冒泡排序。

  3. 針對所有的元素重復以上的步驟,每一趟得到的最大值已放在最后,下一次操作則不需要將此最大值納入計算。

  4. 持續(xù)對每次對越來越少的元素,重復上面的步驟。

  5. 直到所有的數(shù)字都比較完成符合a[i],即完成冒泡排序。

圖示過程

以數(shù)組數(shù)據(jù){ 70,50,30,20,10,70,40,60}為例:

如圖,每一次排序把一個最大的數(shù)被放在了最后,然后按照這個趨勢逐漸往前,直到按從小到大的順序依次排序。

到了第4輪的時候,整個數(shù)據(jù)已經(jīng)排序結束了,但此時程序仍然在進行。

直到第5,6,7輪程序才算真正的結束,這其實是一種浪費算力的表現(xiàn)

主要代碼實現(xiàn)

void?bubble_sort(int?a[],int?n)?{
????for(int?i=0;?i????????for(int?j=0;?j????????????if(a[j]>a[j 1])?{
????????????????swap(a[j],a[j 1]);??//交換數(shù)據(jù)
????????????}
????????}
????}
}
注意,由于C 的namespace std命名空間的使用,std自帶了交換函數(shù)swap(a,b),可以直接使用,其功能是交換a與b的兩個值,當然你可以自定義swap函數(shù),其模板代碼為:

template????????//模板類,可以讓參數(shù)為任意類型
void?swap(T?
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉