快速排序

转载请注明出处:http://blog.csdn.net/droyon/article/details/8790237

/**
 * 快速排序,分治策略。该递归发挥作用了
 * 第一步,固定temp=array[0]
 * 第二步,j=array.length-1.从j向左(j--)开始遍历查找第一个小于temp的元素,替换。
 * 第三步,i=0,从i开始向右(i++)遍历查找大于temp的第一个元素,替换。
 * 判断i==j,
 * 如果相等,递归。
 * 如果不等,循环第二、三步。
 * @author
 *
 */
public class QuickSort {
	private static int[] array = new int[]{1,8,2,9,3,7,11,23,90,4,5};
	public static void main(String args[]){
        System.out.println("排序前");
        printArray();
        System.out.println("\n排序后");
        quickSort(array,0,array.length-1);
        printArray();
	 }
	 private static void quickSort(int[] arr,int first,int end){
		 int firstPos = first;
		 int endPos = end;
		 boolean tranfer = true;
		 if(first>=end){
			 return;
		 }
		 while(firstPos!=endPos){
			 /**
			  * 固定比对元素arr[firstPos],
			  * 从右开始向左遍历,查找小于arr[firstPos]的元素,替换。
			  * 然后从左向右遍历,查找第一个大于arr[endPos](也就是刚才的arr[firstPos],因为执行了一步替换),替换。
			  */
			 if(arr[firstPos]>arr[endPos]){
				 int temp = arr[endPos];
				 arr[endPos] = arr[firstPos];
				 arr[firstPos] = temp;
				 tranfer=tranfer?false:true;
				 //要查看每一次替换结果,将下面打开
				 
//				 System.out.println((tranfer?"从右向左查":"从左向右查")+"["+first+"-"+end+"]");
//				 printArray();
//				 System.out.println();
			 }
			 if(tranfer){
				 endPos--;
			 }else{
				 firstPos++;
			 }
		 }
		 //System.out.println("比对结束"+"["+firstPos+"-"+endPos+"]");
		 firstPos--;
		 endPos++;
		 quickSort(arr, endPos, end);
		 quickSort(arr, first, firstPos);
	 }
	 public static void printArray(){  
        for(int i=0;i<array.length;i++){  
            System.out.print(array[i]+"   ");  
        }  
	 }
}


结果:

排序前
1   8   2   9   3   7   11   23   90   4   5   
排序后
1   2   3   4   5   7   8   9   11   23   90   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值