java快速排序框架

public class 快速排序 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
}
	

	public static void quicksort(int arr[], int left, int right) {
		
		//如果左边索引比右边索引大是不合法的,直接结束使用方法;
		if(left>right) {
			return;
		}
		
		int base = arr[left];//定义变量base指向最左边
		//定义i和j分别指向最左边和最右边
		int L=left,R=right;
		
			//如果左边索引不等于右边索引继续检索
		while (R!= L) {
			
			//注意:如何设置最左边的数为基准数,先从右向左检索
			//右边本身是放比base大的数,检索到大于或等于base的数不做处理,继续向左检索
			while(arr[R]>=base&&R>L) {
				R--;
			}
			//当左边检索值小于等于基准数base时,继续向右检索
			while (arr[L] <= base&&L<R) {
				L++; 
			}
			//run到了这里说明i和j停下了,i位置的数和j位置的的数互换位置
			int temp=arr[L];
			arr[L]=arr[R];
			arr[R]=temp;
		}
		//程序跳出while循环到了这里说明i和j到达了同一个位置。
		//如果i和j到达同一个位置,就将基准数位置的元素和相遇位置的元素互换位置
		arr[left]=arr[L];
		arr[L]=base;
		//第一次排序结束
		
		//排基准数左边
		quicksort(arr, left,R-1);
		//排基准数右边
		quicksort(arr, R+1, right);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朱茂强

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值