選擇排序與氣泡排序區別與比較

2021-07-30 21:46:11 字數 1560 閱讀 7874

每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

如果在 c 語言中去實現選擇排序,我們最常見的就是兩層迴圈的實現方式。從選擇排序的思想出發,我們都不難看出:

n-s圖如下:

演算法如下:

for i = [0, n-2]

select min number from sortobjects after num[i]

if num[i] isnt the min number

swap the min number with num[i]

**如下:

//選擇排序

#includeint main()*/

for(i=0;ia[max])

}

temp=a[i];

a[i]=a[max];

a[max]=temp;//將a[i+1]到a[10]中最大值與a[i]交換

} for(i=0;i氣泡排序的基本思想是將陣列中的每個相鄰元素進行兩兩比較,按照小元素在前(或大元素在前)的原則確定是否進行交換。這樣每一輪執行之後,最大(或最小)的元素就會被交換到了最後一位。

完成一輪之後,我們可以再從頭進行第二輪的比較,直到倒數第二位(因為最後一位已經是被排序好的了)時結束。這樣一輪之後,第二大(或第二小)的元素就會被交換到了倒數第二位。

同樣的過程會依次進行,直到所有元素都被排列成預期的順序為止。這個過程是不是很像是水中的起泡乙個個冒起來的過程.

演算法如下:如果在 c 語言中去實現氣泡排序,我們最常見的就是兩層for迴圈的實現方式。

如果我們有 5個數待排序,我們可以會在程式中寫出這樣的片段:

for(j=0;j<5;j++)

}

i和j都是用於作為陣列索引的變數,swap是乙個交換值的函式.

區別主要在交換的方式上

每一輪都把最大或最小的元素篩選出來放在相應的位置上

這是相同的

但是對於每一輪

比如第一輪

要把1~n 中最大的那個放到n這個位置

冒泡法每次比較和移動相鄰的兩項

而選擇排序每次交換當前項和第n項

我把**寫出來你就懂了:

冒泡:for i:=1 to n-1 do

if (a[i]>a[i+1]) then swap(i,i+1);

選擇:for i:=1 to n-1 do

if (a[i]>a[n]) then swap(i,n);

(swap 表示交換)

總的來說,兩種排序比較的次數是相同的

但交換的次數,選擇排序是更少的

雖然兩者的時間複雜度都是 o(n^2)

但通常,選擇排序更快一點

氣泡排序是每一次都可能要交換

而選擇排序是在比較時記下a[i]的位置 最後來交換

所以他們的交換過程是不一樣的 而查詢的過程是一樣的

效率不會比冒泡的低…

選擇排序與氣泡排序的比較

選擇排序 selection sort 演算法核心思想 每一趟在n i 1 i 1 個記錄中選取關鍵字最小的記錄作為序列中的第i個記錄 簡單選擇操作 通過n i次關鍵字間的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i 1 i n 個記錄交換之,先看乙個依選擇排序思想的 int selec...

選擇排序與氣泡排序的區別

氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數 放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放...

選擇排序與氣泡排序的區別

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。氣泡排序 bubble sort 是一種計算解學領域的較簡單的排序演算法。它重複地...