快速排序

public static void quicksort(int[] a, int left, int right){  //为什么要有left和right呢,因为你的规模要缩小,如果和体现规模缩小?
int pivot; //下次读取前assign value即可
if(left < right){
pivot = partition(a, left, right);
quicksort(a, left, pivot-1);
quicksort(a, pivot+1, right);
}

}

public static int partition(int[] arr, int left, int right){                                  //为什么有left和right?因为用到双指针

int pivot = left;

while(left<=right){                                                                                    //这里有等于号

while(left <= right && arr[left] <= arr[pivot])                                     //从左侧先开始,这里有等号

left++;

while(left < right && arr[right] > arr[pivot])                                        

right++;

if(left > right) break;

swap(arr, left, right)

}

swap(arr, pivot, right);                                                                               //把pivot和right进行swap

}

//https://discuss.leetcode.com/topic/14611/java-quick-select

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值