实验2——快速排序简单实现

给定一个数组,对这个数组进行快速排序。

package IText;

public class QuickSort {
	public static void main(String[] args){
		int[] a = {49,38,65,97,76,13,27};
		quickSort(a,0,a.length-1);
		for(int x:a)
		System.out.print(x+" ");
	}

	public static void quickSort(int[] arr,int start,int end){
		int i = start;
		int j = end ;
		if((arr==null)||(arr.length==0)) 
			System.out.println("数组为空");
		while(i<j){
			while(i<j&&arr[i]<=arr[j]){ //从后往前走,找比arr[0](key的初始值)小的第一个数
				j--;
			}
			//找到这个数后交换
			int temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
			while(i<j&&arr[i]<arr[j]){ //从前往后走,找比key大的第一个数
				i++;
			}
			//找到后两数交换
			temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
		//对key分割出来的左右两个子数组继续快速排序。
		if(i-start>1)
			quickSort(arr,start,i-1);
		if(end-i>1)
			quickSort(arr,i+1,end);
	}
}



算法的时间复杂度为 O(nlogn) 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值