zoukankan      html  css  js  c++  java
  • 回忆数组快速排序算法

    先回忆一下快速排序算法的本质:快速排序是冒泡排序的改进,第一次排序是将一个枢轴元素(通常指定为第一个元素)插入到数组中合适的位置,使得枢轴左边的元素都小于枢轴,右边的元素都大于枢轴,这样原来的数组就切分成两个相对有序的数组,再对其进行快速排序。

    具体做法:附设两个指针low,high,枢轴元素为第一个元素

    首先从high开始,找到第一个小于枢轴的元素,将该元素与枢轴互换,然后从low的位置起向后搜索,找到第一个大于枢轴的元素,将该元素与枢轴互换,重复进行直到low==high。

        static int array[] ={48,20,27,85,79,98,45}; 
        public static void main(String[] args){
            System.out.println("排序以前的数组:");
            printArray();
            System.out.println("排序后的数组:");
            quickSort(0,array.length-1);        
            printArray();
        }
        private static void quickSort(int low ,int high) {
            if(low<high){
                int index =partition(low,high);
                quickSort(low, index-1);
                quickSort(index+1, high);
            }
            
        }
        private static int partition(int low, int high) {
     
            int temp =array[low];
            while(low<high){
                while(low<high&&array[high]>=temp){
                    high--;
                }
                array[low] =array[high];
                   while(low<high&&array[low]<=temp){
                    low++;
                }
                array[high]=array[low];
                       }
            array[low]=temp;
                   return low;
        }
        private static void printArray() {
            for(int i:array){
                System.out.print(i+" ");
            }
            System.out.println();
            
        }
  • 相关阅读:
    python3 pyinstaller
    python3 random
    python3 turtle
    产生一个序列的所有排列组合
    蒙特卡洛算法
    lightoj 1014
    UVA11426
    nginx 配置本地https(免费证书)
    ElementUI
    Airbnb 代码规范
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3092883.html
Copyright © 2011-2022 走看看