快速排序

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了快速排序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

给定一串数字选择一个数作为这串数字的基准值。

每次排序将小于基准值的数放在基准值的左边,将大于基准值的数放在基准值的右边,这样便完成了一次排序。

然后分别对左边子序列和右边子序列进行上一步的操作,知道比较数组的长度为1时完成排序。

 

根据对快速排序的定义我们可以用数组保存这串数。令数组的第一个数做为基准值进行比较。定义两个指针,一个放在数组的首地址,另一个放在位地址。定义左指针叫left,右指针叫right。

快速排序

右值8小于基准值19,交换。

L右移

快速排序

 

 

97大于右值19,交换

R左移

快速排序

 

1小于19

L右移

快速排序

 

 9比19小不交换

L右移

17也比19小L右移

快速排序

 

 

此时重叠,基准值的位置在L=R的时候再次移动R<L,至此一轮比较结束。

依次选择递归,改变递归的左边界和右边界直到递归结束完成排序。

 

 

 

 

代码

public class Quicksort {    public void Qs(int[] arr, int L, int R) {        if (L > R) {            return;        }        int left = L;        int right = R;        int value = arr[left];//最左边是比较值        while (left < right) {            if (arr[right] < value) {                int temp = arr[left];                arr[left] = arr[right];                arr[right] = temp;                left++;            } else {                right--;            }            if (arr[left] > value) {                int temp = arr[right];                arr[right] = arr[left];                arr[left] = temp;                right--;            } else {                left++;            }        }//        System.out.PRintln("left:" + left);//        System.out.println("right:" + right);        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i] + " ");        }        //左            Qs(arr, L, left - 1);        //右            Qs(arr, R + 1, R);    }    public static void main(String[] args) {        QuickSort num = new Quicksort();        int[] arr = new int[]{19, 97, 9, 17, 1, 8};        num.Qs(arr, 0, arr.length - 1);    }}

 

脚本宝典总结

以上是脚本宝典为你收集整理的快速排序全部内容,希望文章能够帮你解决快速排序所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。