import java.util.Arrays;
public class SelectionSort {
private final static int MAX_VALUE = 100;
private final static int LENGTH = 10;
public static void main(String[] args) {
int[] A = new int[LENGTH];
randomIntArray(A);
System.out.println(Arrays.toString(A));
selectionSort(A);
System.out.println(Arrays.toString(A));
}
private static void randomIntArray(int[] array) {
if(array == null) return;
for(int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random() * MAX_VALUE);
}
}
private static void selectionSort(int[] A) { // 选择排序
int smallest = 0, temp = 0; // 循环不变式 : A[0...i-1]
// Price Times
for(int i = 0; i < A.length - 1; i++) { // P1 length
smallest = i; // P2 length - 1
for(int j = i + 1; j < A.length; j++) { // P3 1 + 2 + ... + length - 1
if(A[j] < A[smallest]) { // P4 1 + 2 + ... + length - 1
smallest = j; // P5 2 + 4 + ... + length - 1
} // * 0
} // * 0
temp = A[smallest]; // P6 length - 1
A[smallest] = A[i]; // P7 length - 1
A[i] = temp; // P8 length - 1
} // 总时间 = a*n^2 + b*n + c
}
}
算法导论——选择排序
最新推荐文章于 2023-02-15 10:59:11 发布