選擇排序的實現(xiàn)
-自然語言描述:
首先比庄,找到數(shù)組中最小的那個元素俏站,其次,將它和數(shù)組的第
一個元素交換位置(如果第一個元素就是最小元素那么它就和自己交換)狈谊。再次,在剩下的元素中找到最小的元素沟沙,將它與數(shù)組的第二個元素交換位置河劝。如此往復,直到將整個數(shù)組排序矛紫。
-Java語言描述:
public static void sort(Comparable[] a){
int N = a.length;
for (int i = 0; i < N; i++){
int min = i;
for (int j = i + 1; j < N; j++)
if (a[j] < a [min]) min = j;
Comparable temp = a[min];
a[min] = a[j];
a[j] = temp;
}
}
-驗證代碼:
public class Selection {
public static void sort(Comparable[] a){
//升序
int N = a.length;
for(int i = 0; i < N; i++){
int min = i;
for (int j = i +1; j < N ; j++ ) {
if (less(a[j], a[min])) min =j;
}
exch(a, i, min);
}
}
private static boolean less(Comparable v, Comparable w){ return v.compareTo(w) < 0; }
private static void exch(Comparable[] a, int i, int j){
Comparable t = a[i]; a[i] = a[j]; a[j] = t; }
private static void show(Comparable[] a){ // 在單行中打印數(shù)組
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
public static boolean isSorted(Comparable[] a){
int length = a.length;
for (int i = 1;i < length ;i++ ) {
if (less(a[i],a[i -1])) {
return false;
}
}
return true;
}
public static void main(String[] args) {
String[] a = In.readStrings();
sort(a);
assert isSorted(a);
show(a);
}
}
其中使用到了作者的庫In.java.可以自行下載赎瞎,algs4 · github
-運行:
1.首先在同一目錄新建test.txt.然后在里面以空格分隔的字符。例如:A D O Q E F K
2.cd 到目錄颊咬,執(zhí)行javac Selection.java
3.執(zhí)行java Selection < test.txt