您的位置:首页 > 其它

算法导论——选择排序

2015-12-28 00:35 295 查看
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
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: