氣泡排序和選擇排序對比

2021-09-27 08:12:15 字數 2868 閱讀 9008

1、氣泡排序:

氣泡排序這種方法的基本思想是,將待排序(未排序序列)的記錄看作是豎著排列的「氣泡」,鍵值較小(數值較大)的記錄比較輕,從而要往上浮。在氣泡排序演算法中要對這個「氣泡」序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的記錄的順序是否正確。如果發現兩個相鄰記錄的順序不對,即「輕」(數值較大)的記錄在下面,就變換它們的位置。顯然,處理一遍之後,「最輕」的記錄就浮到了最高位置,處理 i 遍之後,「次輕」的記錄就浮到了次高位置。在作第 i 遍處理時,由於最高位置上的記錄已是「最輕」記錄,所以不必檢查。一般地,第 i 遍處理時,不必檢查第 i 高位置以上的記錄。

簡單來說,氣泡排序就是內迴圈中相鄰兩個數進行比較,若第 j 位比第 j+1 位的數大則交換兩個數的位置。

動畫演示如圖:

實現**:

/**

* 氣泡排序

*/public class sort3 ;

int n;

// 將外迴圈的長度定義為陣列的長度-1,最後兩位只比較一次就可以

for(int i = 0; i < a.length - 1; i ++)

}//每外迴圈完成一次,就列印一次結果

for (int m = 0; m < a.length; m ++)

system.out.println();}}

}執行結果:

3 5 2 4 1 6 8 0 7 9

3 2 4 1 5 6 0 7 8 9

2 3 1 4 5 0 6 7 8 9

2 1 3 4 0 5 6 7 8 9

1 2 3 0 4 5 6 7 8 9

1 2 0 3 4 5 6 7 8 9

1 0 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

2、選擇排序:從待排序的元素中選出最小(大)的元素放在起始位置,然後再從剩餘的元素中選出最小(大)的元素放在已排好的部分之後,直到只剩最後乙個待排序的元素為止。

簡單來說,選擇排序就是用外迴圈的 i 值(基準值)與內迴圈的 j 值(需要進行比較的值)逐一比較,並將最小(大)的數放在前面。

動畫演示如圖:

實現**:

/**

* 選擇排序有小到大進行排序

*/public class sort2 ;

int n;

// 將外迴圈的長度定義為陣列的長度-1,最後兩位只比較一次就可以

for (int i = 0; i < a.length - 1; i ++)

}//每外迴圈完成一次,就列印一次結果

for (int j = 0; j < a.length; j ++)

system.out.println();}}

}執行結果:

0 5 6 3 4 2 9 8 1 7

0 1 6 5 4 3 9 8 2 7

0 1 2 6 5 4 9 8 3 7

0 1 2 3 6 5 9 8 4 7

0 1 2 3 4 6 9 8 5 7

0 1 2 3 4 5 9 8 6 7

0 1 2 3 4 5 6 9 8 7

0 1 2 3 4 5 6 7 9 8

0 1 2 3 4 5 6 7 8 9

3、選擇排序與氣泡排序總結:(1)、氣泡排序就是內迴圈中相鄰兩個數進行比較,若第 j 位比第 j+1 位的數大則交換兩個數的位置。

(2)、選擇排序就是用外迴圈的 i 值(基準值)與內迴圈的 j 值(需要進行比較的值)逐一比較,並將最小(大)的數放在前面。

(3)、通過上述**進行對比會發現選擇排序和氣泡排序有許多相似的地方,說明這兩個排序有相通的地方,兩者不是一點都不相通的。

(4)、從執行結果看,外迴圈每迴圈完一次後的排序結果來說,氣泡排序是呈右直角三角形的,選擇排序是呈左直角三角形的,不過選擇排序結果也可以呈右直角三角形,氣泡排序結果也可以呈左直角三角形。

以選擇排序為例:

/**

* 先將選擇排序由大到小排序

* 再將排序好的選擇排序倒序輸出

*/public class sort2 ;

int n;

for (int i = 0; i < a.length - 1; i ++)

}//每外迴圈完成一次,就倒序列印陣列一次結果

for (int j = a.length-1; j >= 0; j --)

system.out.println();}}

}執行結果:

7 0 8 6 1 4 2 5 3 9

7 0 6 5 1 4 2 3 8 9

6 0 5 4 1 3 2 7 8 9

5 0 4 3 1 2 6 7 8 9

4 0 3 2 1 5 6 7 8 9

3 0 2 1 4 5 6 7 8 9

2 0 1 3 4 5 6 7 8 9

1 0 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

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

選擇排序與氣泡排序的對比 選擇排序與氣泡排序的對比 一,選擇排序 1,演算法原理 給定乙個陣列,這種思想首先假定陣列的首元素為最大或者最小的.此時就要利用3個變數表示元素的下標。乙個表示當前,乙個表示找到的最大或者最小的下標,乙個用於存放每次迴圈中最大值的下標。在掌握了程式的基本思想之後,再進行排序...

排序 氣泡排序和選擇排序

目錄 氣泡排序 氣泡排序原理圖 demo 執行 選擇排序 氣泡排序原理圖 demo 執行 說明 include include using namespace std name 氣泡排序法 number 傳入陣列 length 陣列長度 setw 需要匯入 include ps 這是乙個lib.h的...

選擇排序和氣泡排序

選擇排序和氣泡排序 演算法 蠻力法選擇排序,第一次掃瞄整個陣列,找到最小元素,然後和第乙個元素交換。第二次從第二個元素開始掃瞄陣列,找到剩下的元素中最小的與第二個元素交換位置,直到最後。89 45 68 90 29 3417 17 45 68 902934 89 17 29 68 90 453489...