java之選擇排序(直接選擇排序)

2021-07-11 14:23:48 字數 1213 閱讀 3110

什麼是選擇排序?

它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。

實戰 有這樣乙個陣列

int arr=
選擇排序是這樣排的:

虛擬乙個臨時變數,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次。

3 **

首先需要比較多少次:

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...