java数组排序练习——使用冒泡法排序int型的数组,使用选择排序排序Date型的数组
PracticeSort.java
/* 练习, 使用冒泡法排序int型的数组 使用选择排序法排序Date型的数组 */ public class PracticeSort { public static void main(String[] args) { int[] a = {2, 4, 1, 3, 8, 7, 6, 5, 9, 0}; bubbleSort(a); for(int i=0; i<a.length; i++){ System.out.print(a[i] + " "); } System.out.println(); ///////////////////////////////////////// Date[] days = new Date[5]; days[0] = new Date(2006, 5, 4); days[1] = new Date(2006, 7, 4); days[2] = new Date(2008, 5, 4); days[3] = new Date(2004, 5, 9); days[4] = new Date(2004, 5, 4); selectionSort(days); for(int i=0; i<days.length; i++){ System.out.println(days[i]); } } //冒泡排序int数组 public static int[] bubbleSort(int[] a){ for(int i=a.length-1; i>0; i--){ for(int j=0; j<=i-1; j++){ if(a[j] > a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } return a; } //选择排序法排序Date型的数组 private static void selectionSort(Date[] d) { int k; Date temp; for(int i=0; i<d.length; i++) { //k为最小的数的位置 k = i; for(int j=k+1; j<d.length; j++) { //如果d[k]>d[j],将重新定义最小数的位置 if(d[k].compare(d[j]) > 0) { k = j; } } //如果k的位置不等于i的位置,交换 if(k != i) { temp = d[i]; d[i] = d[k]; d[k] = temp; } } } } //定义日期类 class Date { int year, month, day; Date(int y, int m, int d) { year = y; month = m; 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; } //重写toString() public String toString() { return "Year:Month:Day -- " + year + "-" + month + "-" + day; } }
F:\java>javac PracticeSort.java F:\java>java PracticeSort 0 1 2 3 4 5 6 7 8 9 Year:Month:Day -- 2004-5-4 Year:Month:Day -- 2004-5-9 Year:Month:Day -- 2006-5-4 Year:Month:Day -- 2006-7-4 Year:Month:Day -- 2008-5-4 F:\java>