优化后的排序算法:
//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;
}
}