Java快速排序的实现和时间空间复杂度分析

package learn.java;

public class QuickSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
       int[] pendingSort={10,13,2,1,20,39,45,32,3,5,6,86,9,100,99,45,65,65,23};
       int left=0;
       int right=pendingSort.length-1;
       int[] result=sort(pendingSort,left,right);
       for(int index=0;index<result.length-2;index++){
       System.out.print(result[index]+",");
       }
       System.out.print(result[result.length-1]);
	}

	private static int[] sort(int[] pendingSort, int left, int right)
	{
		if(left<right)
		{
			int temp=pendingSort[right];
			int p=left;
			int q=right;
			while(p<q)
			{
				while(pendingSort[p]<=temp&&p<q)
				{
					p++;
				}
				pendingSort[q]=pendingSort[p];
				
				while(pendingSort[q]>=temp&&q>p)
				{
					q--;
				}
				pendingSort[p] = pendingSort[q];
			}
			int mindle=p;
			pendingSort[q]=temp;
			sort(pendingSort,left,mindle-1);
			sort(pendingSort,mindle+1,right);
		}
		return pendingSort;
	}

}

时间复杂度 N O(logN) 空间复杂度logN,请参照视频http://v.youku.com/v_show/id_XNzQwNTAxMjA=.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值