氣泡排序和選擇排序區別

2021-07-26 11:18:48 字數 2006 閱讀 3223

氣泡排序法

相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處

分析:第一次比較排序的結果:會把其中最大的資料排到最大的索引處

第二次比較排序後的結果:因為第一次已經把最大的乙個資料放到了最大的索引的地方,

所以這次要進行比較的資料比陣列裡面的元素的資料個數-1個,而第二大的資料也會排到第二大的索引處

第三次比較排序的結果:跟第二次差不多,只是這次要進行比較的資料比陣列裡面的元素的資料個數還少了2個,

第四次:少3個..

綜上所述,要使陣列裡面的資料按照從小到大排序,總的比較的次數會比陣列的長度-1次,

而隨著比較的次數的增加,每次要進行比較的資料依次減少,也就是

for(int x =0; x < arr.length - 1 ;x++)

}

例項

int int x,y,t;

for(int x =0; x < arr.length - 1 ;x++)

}}

氣泡排序基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。

陣列排序之選擇排序:

從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處

分析:1:首先是0索引上的資料依次跟後面各個索引上的資料進行比較,

直到遇到乙個比它小的資料,這時候,這個小的資料就替換掉0索引上原來的資料,

接著這個替換掉的資料繼續跟它原來的索引位置的後面的索引上的資料進行比較

例如: 22跟11比後,變成,接著11繼續跟13、10比較,遇到10後,變成

也就是說,進行完a後,0索引上的資料肯定是這個陣列上最小的資料

2:接著就是1索引上的資料來跟後面的資料進行比較,這個時候參與比較的資料比原來少了乙個

3:跟2一樣,就這樣進行下去,知道全部都比較完畢。

4:總結上面,得出總共需要進行幾次a步驟的次數:

如果是5個資料的陣列的話,就一共需要比較arr.length(4)次,若從0開始計數,則是 4-1 = 3次

而每次比較時,所參與的索引的資料是不一樣的:

第一次時,是0和1以及後面的資料比較;

第二次時,是1和2以及後面的資料比較

...5:從4得出

for(int x = 0; x< arr.length - 1; x++)

}

int i,j,t;

j為陣列下標

t為定義的要插入的數

for(i=1;ilen為陣列的長度

arr[j+1]=t;

}

選擇排序它的基本思想是:第一次從r[0]~r[n-1]中選取最小值,與r[0]交換,第二次從r~r[n-1]中選取最小值,與r[1]交換,....,   第i次從r[i-1]~r[n-1]中選取最小值,與r[i-1]交換,.....,第n-1次從r[n-2]~r[n-1]中選取最小值,與r[n-2]交換,總共通過n-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...

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

一 區別 二 氣泡排序優缺點 三 選擇排序優缺點 1.氣泡排序是比較相鄰位置的兩個數,而選擇排序是按順序比較,找最大值或者最小值 2.氣泡排序每一輪比較後,位置不對都需要換位置,選擇排序每一輪比較都只需要換一次位置 3.氣泡排序是通過數去找位置,選擇排序是給定位置去找數 1.優點 比較簡單,空間複雜...