
找到第一个数作为基准数,在左右两边定义两个指针,右边的指针去找比当前基准数小的数据,停止;左边的指针去找比当前基准数大的数据,停止;左右两边的数值互换。然后继续,知道两个指针重合,重合之后我们需要基准数和重合的数字互换,基准数就已经排好序了。之后按照重合的位置分成左右两个数组,继续之前的逻辑。(O(n*logn))
找到第一个数为基准数,定义两个指针,(指针i寻找比当前大的数,指针j寻找比当前小的数,找到后位置互换,若指针重合,则将它与第一个互换)
public class QuickSort {
public static void main(String[] args) {
int[] arr = new int[] {2,56,8,45,6,25};
quickSort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int arr[],int left,int right) {
if(left>=right) {
return;
}
int base = arr[left];
int i = left;
int j = right;
while(i!= j) {
while(arr[j] >=base&&i
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)