什麼是選擇排序?
它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。
實戰 有這樣乙個陣列
int arr=
選擇排序是這樣排的:
3 **虛擬乙個臨時變數,int
max = 0
《代表0號位置上存放的是最大值》
第1次比較
首先假定 第乙個位置上的數為最大值,那就是2,此時記錄的max最大值的位置號還是0 。
在arr數值中,2
<5,所以此時的max記錄的位置號就是 1號位了。繼續拿max記錄位置所代表的最大值與其後位置上的數依次比較,最後確定max記錄的位置號為5,值為 6 。-》 max=5。
在arr陣列中,由於記錄的位置號的最大值是在5號位置,所以需要與0號位置上的值做交換。
此時的arr 陣列 為
第2次比較
由於在0號位置上已經確定了最大值,所以不需要在做比較。直接從 1 號位置開始比較起。此時max記錄的最大值的位置號就是1,值是5.拿5這個值依次與其後的數做比較。發現值5已經是最大了,不需要交換。因此此時 arr 陣列還是這樣的:
以此類推
第3次比較 arr 陣列是
第4次比較 arr 陣列是
第5次比較 arr 陣列是
在這個陣列 arr 中 的長度是6 ,一共比較了5次。
最終完整版:首先需要比較多少次:
for(int i = 0 ;ilength -1 ;i++){}
虛擬乙個臨時變數 int
max, 假設 i 位置的是最大值
intmax = i;
開始與其後的數做比較,如果後一位置的值大於虛擬變數記錄的位置的值,就改變max記錄的位置
for(int j=i+1;jif(arr[max]max=j;
}
判斷max記錄的位置號是不是原始記錄的位置號,如果不是,就交換位置所代表的值。
if(i!=max)
補張圖:int arr =;
for(int i=0;ilength-1;i++ )
}if(i!=max)
}
結束,收工。
Java直接選擇排序
直接選擇排序方法屬於選擇排序的一種,它的排序速度要比氣泡排序快一些。直接排序的基本思想是將指定排序位置與其它陣列元素分別對比,如果滿足條件就交換元素值。public class selectsort selectsort selectsort new selectsort selectsort.so...
直接選擇排序之java陣列
並放到次前 後 位置。以此類推,經過n 1趟完成排序。下面是直接選擇排序的陣列實現 直接選擇排序 移動次數少 比較次數與序列的初始次序無關 直接選擇排序不穩定 public static int selectsort int data if min i swap data,i,min return ...
選擇排序 直接選擇排序
演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...