快速排序学习 以数组中间值为轴

public static void main(String[] args) {
		int[] arrs = {15,13,17,19,6,34,9,55,9,3242,4};
		quickSearch(arrs,0,arrs.length-1);
		for (int i : arrs) {
			System.out.println(i);
		}
	}


	private static void quickSearch(int[] arrs, int left, int right) {
		// TODO Auto-generated method stub
		if(left<right){//首先判断角标是否越界
			int cen = arrs[(left+right)/2];//用变量将中间值记录下来,不记录下来会使中间值在下面代码执行过程中发生改变,因为数组在下面发生了重排,这时再取值就不准了
			int i = left-1;
			int j = right+1;
			while(true){
				while(arrs[++i]<cen);
				while(arrs[--j]> cen);
				if(i>=j)
					break;
				swap(arrs, i, j);
			}
			quickSearch(arrs,left,i-1);
			quickSearch(arrs,j+1,right);
		}
	}


	private static void swap(int[] arrs, int i, int j) {
		// TODO Auto-generated method stub
		int temp= 0;
		temp = arrs[i];
		arrs[i]= arrs[j];
		arrs[j]=temp;
	}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值