八大排序(二)氣泡排序

2022-07-26 09:45:12 字數 1254 閱讀 6362

這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。

在介紹氣泡排序之前我先引入乙個概念,以方便解釋。

遍歷,字面意思是遍歷就是全部走遍,到處周遊的意思。當然遍歷的概念也適合於多元素集合的情況,如陣列。

(程式**上的意思是指沿著某條搜尋路線,依次對樹中每個結點均做一次且僅做一次訪問,訪問結點所做的操作依賴於

具體的應用問題。遍歷是二叉樹上最重要的運算之一,是二叉樹上進行其它運算之基礎。)【()中的內容這些以後會學到】

氣泡排序每次遍歷整個數列 ,先找出最大的一項放到數列的最後一項(與最後一項的數交換), 

再找出第二大的一項放到倒數第二項,以此類推, 直到整個數列排序完

我們可以先假設有乙個n項的數列, 先遍歷n項, 找到最大的一項放到第n個位置(與第n個位置的數交換),

再遍歷n-1項(因為最後一項已經是最大的,沒必要再遍歷),以此類推,直到整個數列排完。

此過程只需要n-1次, 剩下的一定是最小的數, 放到第一項即可。

下圖是乙個n = 7的氣泡排序

首先找到了89(最大一項),和55(最後一項)交換,其次找到了61, 和55(倒數第二項)交換……直到結束

在這裡我要引入乙個叫函式的概念

bubblesore(int a,int n) 所有專案中的地方都可以呼叫這個函式,**只要寫一遍就可以了。

既然排序的是陣列,所以直接是對待排序的那個陣列在操作。不需要返回值,陣列就改變了, 所以直接命名成void型。

#includeint arr[100000];//定義乙個非常大的陣列, 防止溢位

//bubblesort是氣泡排序的英文,len是length的縮寫,相當於n,

//()內是引數列表【就是你要輸入函式體內的量】,注意要輸入乙個陣列時要在int後+*

void bubblesort(int *arr,int len)

}}int main()

bubblesort(arr, n+1);//呼叫氣泡排序函式進行排序

for(i = 0; i < n; i++)//輸出排好序的數列

return 0;

}

八大排序 氣泡排序

原理 每次比較兩個數值,然後將數值大的交換到右邊。本人理解 迴圈陣列長度的次數,每次迴圈,都會將當前剩下的,還未排好序的數值中最大的值,放到當前未排好序的數值的最右邊,即下標為 陣列的長度 當前迴圈的次數 當前迴圈的次數 i 1 下標是由0開始,所以下標值要加1才等於迴圈次數 注釋 減當前迴圈的次數...

八大排序之(二)氣泡排序

氣泡排序是乙個比較簡單的排序,時間複雜度為o n 每輪從第乙個數開始,與後乙個數比較,若前乙個數大於後面的數則交換,然後比較下乙個。這樣經過一輪比較後,陣列中最大的數就被冒泡到隊尾,每輪結束後,從倒數第i 輪數 個數開始,都是有序的。public class insertionsort 向插入位置插...

八大排序演算法 氣泡排序

在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。include include 常規氣泡排序 void bubblesort int r,int n ...