查找之交换快排

迭代形式 每一级方法的执行都能将一个取定的基准值放到中间
6 3 2 8 1 5 4 7 9
取6作为基准值 第一级方法partition执行完能将数据按照6位基准左右分割成两部分

	public static void sort(int[] L, int left, int right)
	{
		int pivot;
		if(left < right)
		{
			pivot = partition(L, left, right);
			sort(L, left, pivot - 1);
			sort(L, pivot + 1, right);
		}
	}
将基准值不停的与比他它大 和比他小的位置交换  最终换到分割点
	public static int partition(int[] L, int left, int right)
	{
		int pivotkey;
		pivotkey = L[left];
		while(left < right)
		{
			while(left < right && L[right] >= pivotkey)
			{ 
				right--;
			}
			//与右边比基准值小的数交换位置
			swap(L, left, right);
			while(left < right && L[left] <= pivotkey)
			{  
				left++;
			}
			//与左边比基准值小的数交换位置
			swap(L, left, right);
		}
		//分割点 即基准值得坐标
		return left;
	}
	
	public static void swap(int[] L, int i, int j)
	{
		int temp = L[i];
		L[i] = L[j];
		L[j] = temp;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值