懒癌患者的学习记录之JAVA快速排序代码

快速排序

快速排序基本思路

1,取数组中的一个数(一般为最左边的数)作为基准点
2,从数组的最右边开始取值与基准点进行比较,取比基准点小(大)的值
3,从数组的最左边开始取值与基准点进行比较,取比基准点大(小)的值
4,将两个值互换位置,然后继续取值,直到两者相遇(不需要都取到值),然后将基准点与相遇点的值互换
5,这个时候基准点就已经归位了,左边是比他小(大)的值,右边是比他大(小)的值。
6,以基准点为分割线将数组分为两块,分别重复进行上述的操作,直到所有值归位。
代码
public class QuickSort{
	//arr为需要排序的数组
	//left为数组最左边
	//right为数组最右边
	public static void quickSort (int[] arr, int left,int right){
		//保持left的位置一定在right左边
		if(left > right){
			return;
		}
		//i为左边取值的点
		//j为右边取值的点
		//temp为基准点的值
		//tw为一个中间变量
		int i,j,temp,t;
		i = left;
		j = right;
		temp = arr[left];
		
		
		while(i<j){
			
			//找右边的值
			while(temp >= arr[j] && i<j){
				j--;
			}
			
			//找左边的值
			while(temp <= arr[i] && i<j){
				i++;
			}
			
			
			//满足条件时交换位置
			if(i<j){
				t = arr[i];
				arr[i] = arr[j];
				arr[j] = t; 
			}
		} 
		//相遇后跳出while循环,进行基准点的换位
		arr[left] = arr[i];
		arr[i] = temp;
		
		//用递归进行重复操作
		quickSort(arr,left,i-1);
		quickSort(arr,i+1,right);	

	}
	public static void main(String[] args){
        int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        quickSort(arr, 0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值