zoukankan      html  css  js  c++  java
  • java例程练习(引用类型数据的排序和查找)[外篇]

    public class TestSort {
    	public static void main(String[] args) {
    		Date[] days =  new Date[5];
    		//定义5个Date
    		days[0] = new Date(2006, 8, 6);
    		days[1] = new Date(2007, 4, 6);
    		days[2] = new Date(2008, 4, 9);
    		days[3] = new Date(2004, 4, 6);
    		days[4] = new Date(2009, 4, 5);
    		
    		//要找的Date
    		Date d = new Date(2006, 8, 6);
    		
    		//先冒泡排序
    		bubbleSort(days);
    		
    		//打印一下便于输出查找位置
    		for(int i = 0; i < days.length; i++) {
    			System.out.println(days[i]);
    		}
    		
    		//二分法查找并输出位置
    		System.out.println(binarySearch(days,d));
    		
    	}
    	
    	public static Date[] bubbleSort(Date[] a) {
    		int len = a.length;
    		for(int i = len - 1; i >= 1; i--) {
    			for(int j = 0; j <= i -1; j++) {
    				if(a[j].compare(a[j + 1]) > 0) {
    					Date temp = a[j];
    					a[j] = a[j + 1];
    					a[j + 1] = temp;
    				}
    			}
    		}
    		return a;
    	}
    	
    	public static int binarySearch(Date[] days, Date d) {
    		if(days.length == 0) {
    			return -1;
    		}
    		int startPos = 0;
    		int endPos = days.length - 1;
    		int m = (startPos + endPos) / 2;
    		
    		while(startPos <= endPos) {
    			if(d.compare(days[m]) == 0)	{
    				return m;
    			}
    			if(d.compare(days[m]) > 0) {
    				startPos = m + 1;
    			}
    			if(d.compare(days[m]) < 0) {
    				endPos = m - 1;
    			}
    			
    			m = (startPos + endPos) / 2;
    		}
    		
    		return -1;
    	}
    }
    
    class Date {
    	int year;
    	int month;
    	int 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;
    	}
    
    	public String toString() {
    		return "" + year + "-" + month + "-" + day;
    	}
    }

  • 相关阅读:
    20201216-1 文件读与写详解3
    20201214-4 文件读与写详解2
    20201214-3 文件读与写详解1
    20201214 集合及其运算
    3月17日:毕业设计计划
    3月16日:毕业设计计划
    3月15日:毕业设计计划
    3月14日:毕业设计计划
    3月13日:毕业设计计划
    3月12日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671633.html
Copyright © 2011-2022 走看看