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

2022-09-24 00:06:16 字數 740 閱讀 3787

選擇排序(selection sort)

演算法核心思想:每一趟在n-i+1(i>=1)個記錄中選取關鍵字最小的記錄作為序列中的第i個記錄

簡單選擇操作:通過n-i次關鍵字間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i(1<=i<=n)個記錄交換之,先看乙個依選擇排序思想的**:

int selectsort(mergetype *l)

/*比較次數為:n-1+n-2 + 1 + 0 = n*(n-1)/2*/

for (int i = 0; i < l->len-1; i++) //每乙個數

}swap(l->elem[i], l->elem[min]);

} return 0;

}這裡每次選擇最小的放在第i趟的第i個位置上,這裡從**選擇,就是從i~len-1裡選擇最小的,看乙個簡單的例項

...for (int i=0; il.elem[j] }}

...這裡i != j是為了避免交換自己,這裡看一下冒泡演算法的for迴圈的特別之處

再看一下時間複雜度:最壞的情況比較的次數=(n-1)+(n-2)+……+1+0=n*(n-1)/ 2 =o(n^2)

for (i = 0; i <= l->len-1; i++) //每一趟

} }冒泡是在一趟裡面比較數將最大的數沉入最低端;而選擇排序是在對每乙個數與其他的數進行比較,比較出最小的乙個或者最大的乙個,但是也是從一趟中選擇最大的乙個,是不是有點類似,看到for迴圈裡面的注釋,只是for迴圈的含義不一樣

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

每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。如果在 c 語言中去實現選擇排序,我們最常見的就是兩層迴圈的實現方式。從選擇排序的思想出發,我們都不難看出 n s圖如下 演算法如下 for i 0,n 2...

氣泡排序和選擇排序的實現與比較

氣泡排序 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。實現 c void so...

氣泡排序與選擇排序的簡單介紹與比較

氣泡排序public static void sortcompare 要遍歷的次數 第一輪 43521比四次 第二輪 45321比三次 第三輪 45321比兩次 第四輪 54321比一次 for int i 0 i arr.length 1 i for int count arr 選擇排序publi...