選擇排序,簡單的說就是,每次遍歷數列,取出最大或最小的值放在已排好序數列的最後。
最簡單的就是在排序方法內部新建一個和原數組大小同樣的空數組,這樣每次遍歷以後把最大或最小值放在對應的空數組中,代碼以下:
public static int[] selectSort1(int[] arr) {
if (arr == null || arr.length == 0) {
return null;
}
int[] newArr = new int[arr.length];
int minNum = Integer.MIN_VALUE;
for (int i=0; i<arr.length; i++) {
minNum = arr[i];
for (int j=i+1; j<arr.length; j++) {
if (arr[j] < minNum) {
minNum = arr[j];
}
}
newArr[i] = minNum;
}
return newArr;
}
在這裏面咱們傳建了一個新的數組,可是咱們能夠不能夠不建立這個數組?答案是能夠不建立,咱們能夠記錄最小值的下標,而後跟每次循環的i進行對換,這樣咱們就能夠在原數組中實現排序,代碼以下:
public static void selectSort2(int arr[]) {
if (arr == null || arr.length == 0) {
return;
}
int minIndex = 0;
int t = 0;
for (int i=0; i<arr.length; i++) {
minIndex = i;
for (int j=i+1; j<arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
t = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = t;
}
}
}
更多內容請訪問
數組