排序算法 - 交换排序 - 快速排序

实现方法


1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。

2.j–由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。

3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。

java代码


    public static void quickSort(int[] a , int left , int right) {
        //因为要递归所以需要判断下
        if(left<right)
        {  
                      //取 i,j 方便操作值 不会被覆盖, x 为第一个数
            int i = left ,  j = right , x = a[left];
            

            while(i<j) {
                //先找右边比x(也就是比a[left] 第一个值小的数)
                while(i<j && a[j]>x)
                {
                                    //如果满足a[j]小于或等于第一个数,获取到当前右边的索引(满足条件的下标)
                                         j--;
                }
                //因为上面j是变化的 所以需要接着判断
                if(i<j)
                {
                                       //把符合条件的放在a[i]的位置  i++是运行完这句话 i才变化  左边下标后移
                    a[i++]=a[j];
                }
                
                while(i<j&&a[i]<x)
                {
                                        //如果满足a[j]小于或等于第一个数,获取到当前左边的索引(满足条件的下标)
                    i++;
                }
                
                if(i<j)
                {
                                      //把左边的满足条件的赋值给右边 并且赋值后j--
                    a[j--]=a[i];
                }
                
            
                
            }
                    //最后把x放到 符合的位置
                    a[i]=x;
                
                        //第一步完成
                        //下面递归左右两次
            quickSort(a,left,i-1);
            quickSort(a, i+1, right);
        }
        

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容