選擇排序是每次從待排序的數據元素中選出最小的一個元素,存放在序列的起始位置,直到最後排序完畢。
下面是我寫的用選擇排序進行的10個數的排序過程:
首先假定第一個數7是最大的,然後用7和第二個數5比較,5比7小,取最小值爲5,再和3比較,一直比到最後發現最小值爲0,這時0和7交換位置。
第二行,從第二個數開始比較,假定5是最大的,依次比較後面的幾個數,找出比5小的數交換位置
依次下面的幾行也是這樣的,記錄最小數是通過記錄下標進行的。
代碼部分:
public static void main(String[] args){
int a[]={7,5,3,4,1,2,6,8,9,0};
for (int i = 0; i < a.length-1; i++) {
int min=i;
for (int j = i+1; j < a.length; j++) {
if(a[j]<a[min]){
min=j;
}
}
if (i !=min){
int temp =a[i];
a[i]=a[min];
a[min]=temp;
}
System.out.print("第" + (i + 1) + "次排序結果:");
for(int m = 0; m < a.length; m++) {
System.out.print(a[m] + "\t");
}
System.out.println("");
}
System.out.print("最終排序結果:");
for(int n = 0; n < a.length; n++) {
System.out.print(a[n] + "\t");
}
}
運行結果:
總結:
它和冒泡排序很相似,它們的區別是,冒泡排序每次兩個數進行比較後如果後面的比前面的小就進行交換,選擇排序也需要兩個數進行比較,但是每次取到最小的數之後不進行交換,而是記住它的下標值,當這幾個數都比較完之後拿最小值的下標與最開始假定最小的值的小標比較,如果不相等,它們兩個值交換位置。