冒泡和選擇排序的區別

2021-06-28 06:29:13 字數 840 閱讀 4895

冒泡和快速排序的區別在於:冒泡演算法,每次比較如果發現較小的元素在後面,就交換兩個相鄰的元素。將待排序的元素看作是豎著排列的"氣泡",較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個"氣泡"序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。如果發現兩個相鄰元素的順序不對,即"輕"的元素在下面,就交換它們的位置。顯然,處理一遍之後,"最輕"的元素就浮到了最高位置;處理二遍之後,"次輕"的元素就浮到了次高位置。在作第二遍處理時,由於最高位置上的元素已是"最輕"元素,所以不必檢查。一般地,第i遍處理時,不必檢查第i高位置以上的元素,因為經過前面i-1遍的處理,它們已正確地排好序。而選擇排序演算法的改進在於:先並不急於調換位置,先從a[1]開始逐個檢查,看哪個數最小就記下該數所在的位置p,等一躺掃瞄完畢,再把a[p]和a[1]對調,這時a[1]到a[10]中最小的資料就換到了最前面的位置。 

所以,選擇排序每掃瞄一遍陣列,只需要一次真正的交換,而冒泡可能需要很多次。比較的次數是一樣的。

其實看你宣告的變數的個數就知道了。選擇的要比冒泡的多宣告乙個,用來儲存最小(或最大的)元素的下標。而冒泡的比較後直接換。

#include"stdio.h"

main()

for(i=0;i<=10;i++)

printf("%d ",a[i]);}二:

#includemain()

{ int a[10],i,j,k,temp;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)

{ k=i;

for(j=i+1;j<10;j++)

if(a[j]

氣泡排序和選擇排序區別

氣泡排序法 相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處 分析 第一次比較排序的結果 會把其中最大的資料排到最大的索引處 第二次比較排序後的結果 因為第一次已經把最大的乙個資料放到了最大的索引的地方,所以這次要進行比較的資料比陣列裡面的元素的資料個數 1個,而第二大的資料也會排...

氣泡排序和選擇排序區別

原理上 冒泡是兩兩相鄰的比較,遇到最大的就交換,把最大的沉到後面。選擇排序是假設第乙個為最小,然後不斷和後面的進行比較,遇到更小的就交換位置,把最小的換到前面。author zzk coding utf 8 氣泡排序 data set 9,1,22,31,45,3,6,2,11 for i in r...

氣泡排序和選擇排序的區別?

在一次寫選擇排序演算法的時候,發現和冒泡沒啥區別,後來發現寫錯了,寫的就是冒泡而非選擇。先看一下期初的 templatevectorselectionsort vector arr return arr 再看一下冒泡 2.氣泡排序 templatevectorbubblesort vector ar...