• 排序算法快速排序


    思路:

    1.定义一个partition(这利用最简单的:数组的第一个数)

    先从右往左找,找到第一个比partition小的数,放在low这个位置(由于此时low这个地方的数已经保存在partition中了,所以不会丢失)

    然后从左往右找,找到第一个比partition大的数,将其放于high此时的位置(high已经被放入了先前low的位置)

    然后将partition放入相遇点 left&right

    直到left与right相遇,此时已经完成了一次划分,low-left&right-high,且左边都是比partition小的数,右边都是比它大的数,那么,后续只需递归调用sort即可:

    sort(low,left-1);

    sort(left+1,high);

    public class QuickSort {
    
        public void sort(int[] a, int low, int high){
            if(low>=high){
                return;
            }
            int partition = a[low];
            int left = low, right =  high;
            while(left < right){
                while(left<right && a[right] >= partition){
                    right--;
                }
                if(left<right){
                    a[left] = a[right];
                }
                while(left<right && a[left] <= partition){
                    left++;
                }
                if(left<right){
                    a[right] = a[left];
                }
            }
            a[left] = partition;
            sort(a,low,left-1);
            sort(a,left+1,high);
        }
        @Test
        public void test(){
            int[] a = {1,2,5,8,3,4,6,9,7};
            sort(a,0,a.length-1);
            System.out.println(Arrays.toString(a));
        }
    
    }
  • 相关阅读:
    操盘策略:判断强庄股的四个诀窍
    三类股有望继续走强
    操盘策略:股市空头陷阱五大招数
    每日一招:面对亏损我们应该如何操作(鳄鱼法则)
    (转)一个大户的自白:我是这样被两融打爆的
    3.2、迭代
    3.1、切片
    2.4、递归函数
    2.3、函数的参数
    2.2、定义函数
  • 原文地址:https://www.cnblogs.com/wsZzz1997/p/14731521.html
Copyright © 2020-2023  润新知