三种排序

package test;

public class Demo {
	
	//快读排序
	public static void kspx(int[] index){
		
		//i is left ;       index.length-i-1 is right
		for (int i = 0; i < index.length/2; i++) {
			//left和右边的比较 
			for (int j = i+1; j < index.length-i; j++) {
				if(index[i]>index[j]){
					int temp = index[i];
					index[i] = index[j];
					index[j] = temp;
				}
			}
			//right和左边的比较
			for (int j = i+1; j < index.length-i-1; j++) {
				if(index[index.length-i-1]<index[j]){
					int temp = index[index.length-i-1];
					index[index.length-i-1] = index[j];
					index[j] = temp;
				}
			}
		}
		for (int i = 0; i < index.length; i++) {
			System.out.print(index[i]+" ,");
		}
	}
	//插入排序
	public static void crpx(int[] index){
		
		//index[i]要插入到前边的有序的数组里
		for (int i = 1; i < index.length; i++) {
			//和前边的每一个数比较 直到找到比它大的数 跳出循环,插入进来
			label:
			for (int j = 0; j < i; j++) {
				if(index[i]<index[j]){
					//让后边的每一个数向后顺延一位,插入进来,最后跳出循环
					int temp = index[i];
					for (int j2 = i-1; j2 >= j; j2--) {
						index[j2+1] = index[j2];
					}
					index[j]= temp;
					break label;
				}
			}
		}
		for (int i = 0; i < index.length; i++) {
			System.out.print(index[i]+" ,");
		}
	}
	//选择排序
	public static void xzpx(int[] index){
		
		// index[i] 前边的是有序的 然后从无序的数组里挑出一个最小的和index[i]交换位置
		for (int i = 0; i < index.length-1; i++) {
			int minIndex = i;//无序数组里最小的数的索引
			int min = index[i];
			for (int j = i+1; j < index.length; j++) {
				if(index[j]<min){
					min = index[j];
					minIndex = j;
				}
			}
			//交换位置
			int temp = index[minIndex];
			index[minIndex] = index[i];
			index[i] = temp;
		}
		for (int i = 0; i < index.length; i++) {
			System.out.print(index[i]+" ,");
		}
	}
	
	public static void main(String[] args) {
		int[] index = {8,9,4,5,5,3,6,4,96,9,5,5,65,26,0,1};
//		new Demo().kspx(index);
//		new Demo().crpx(index);
		new Demo().xzpx(index);
	}

}

  

posted @ 2014-07-23 16:58  刘尊礼  阅读(125)  评论(0)    收藏  举报