优化后的排序算法:
//TestNumberSort.java public class TestNumberSort{ public static void main(String args[]) { int a[] = new int[args.length]; for(int i = 0; i < args.length; i++) { a[i] = Integer.parseInt(args[i]); } print(a); SelectionSort(a); print(a); /* int a[]; a = new int[9]; a[0] = Integer.parseInteger(args[0]); a[1] = Integer.parseInteger(args[1]); a[2] = Integer.parseInteger(args[2]); a[3] = Integer.parseInteger(args[3]); a[4] = Integer.parseInteger(args[4]); a[5] = Integer.parseInteger(args[5]); a[6] = Integer.parseInteger(args[6]); a[7] = Integer.parseInteger(args[7]); a[8] = Integer.parseInteger(args[8]); sort(); for(int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } */ } /* private static void SelectionSort(int a[]) { for(int i = 0; i < a.length; i++) for(int j=i+1; j<a.length; j++) { if(a[i] > a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } */ private static void SelectionSort(int a[]) { int k,temp; for(int i = 0; i < a.length; i++) { k = i; for(int j = k; j<a.length; j++) { if(a[j] < a[k]) { k = j; } } if( k != i) { temp = a[i]; a[i] = a[k]; a[k] = temp; } } } private static void print(int a[]) { for(int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } /* public void sort() { int i = 0; int j; for(j = i + 1; j < a.length; i++, j++) { if(a[i] > a[j]) { int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; } } } */ }
小练习:
阅读下面的程序,任意初始化days数组,然后对days数组排序,再用折半查找法查找特定的Date对象day
//Test.java public class Test { public static void main(String args[]) { Date[] days = new Date[10]; Date day = new Date(2004, 4, 6); } } class Date { int day,month,year; Date(int y, int m, int y) { this.year = y; this.month = m; this.day = d; } public int compare(Date date) { return year > date.year ? 1 : year < date.year ? -1 : month > date.month ? 1 : month < date.month ? -1 : day > date.day ? 1 : day < date.day ? -1 : 0; } }