`
prowl
  • 浏览: 79388 次
  • 性别: Icon_minigender_1
  • 来自: 艾泽拉斯
社区版块
存档分类
最新评论

三个排序

    博客分类:
  • j2se
J# 
阅读更多
package org.edisonyoung.commons.datastructure;

import java.util.Comparator;

/**
 * @author edison
 * @date 2009-11-2
 */
public class SortUtils {
	
	/**
	 * 选择排序
	 */
	public static void sortBySelection(int[] array,int off,int len){
		for(int i=off;i<len-1;i++){
			int min=i;
			for(int j=i+1;j<len;j++){
				if(array[min]>array[j])
					min=j;
			}
			swap(array,min,i);
		}
	}
	/**
	 * 冒泡排序
	 */
	public static void sortByBubble(int[] array,int off,int len){
		for(int i=off;i<len;i++){
			for(int j=off;j<len-i-1;j++){
				if(array[j+1]<array[j]){
					swap(array,j+1,j);
				}
			}
		}
	}
	
	/**
	 * 插入排序(Insertion Sort 对象数组)
	 */
	public static <T> void sortByInsertion1(T[] t,Comparator<? super T> comp){
		for(int i=0;i<t.length;i++)
			for(int j=i;j>0&&comp.compare(t[j-1], t[j])==1;j--)
				swap(t,j,j-1);
	}
	
	/**
	 * 插入排序(Insertion Sort Core)
	 */
	public static void sortByInsertion(int[] array,int off,int len){
		for(int i=off+1;i<len;i++){
			int sign=array[i];
			int j=0;
			for(j=i-1;j>=off&&array[j]>sign;j--){
				array[j+1]=array[j];
			}
			array[j+1]=sign;
		}
	}
	
	private static <T> void swap(T[] t,int i,int j){
		T sign=t[i];
		t[i]=t[j];
		t[j]=sign;
	}
	
	private static void swap(int[] t,int i,int j){
		int sign=t[i];
		t[i]=t[j];
		t[j]=sign;
	}
	
	public static void main(String[] args){
		int[] array={5,6,3,1,7,2,4};
		
		//sortByInsertion(array,0,array.length);
		//sortByBubble(array,0,array.length);
		sortBySelection(array,0,array.length);
		
		for(int element:array){
			System.out.print(element+",");
		}
		
//		Person p1=new Person(4);
//		Person p2=new Person(1);
//		Person p3=new Person(3);
//		Person p4=new Person(2);
//		
//		Person[] pArray={p1,p2,p3,p4};
//		
//		Arrays.asList(pArray);
//		
//		sortByInsertion1(pArray,new Comparator<Person>(){
//
//			@Override
//			public int compare(Person p1, Person p2) {
//				return p1.getAge()<p2.getAge()?0:1;
//			}
//			
//		});
//		
//		for(Person p:pArray){
//			System.out.print(p.getAge()+",");
//		}
		
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics