• 七大基本排序算法之快速排序


    /**
     * 快速排序
     * @author xiaomi
     * 2012.4.2
     */
    public class QuickSort {
        public static void main(String[] args) throws IOException{
            String s = InputString.getString();
            String[] str = s.split(" ");
            int[] a = new int[str.length+1];
            for(int i = 0;i < str.length;i++){
                a[i+1] = Integer.parseInt(str[i]);
            }
            quickSort(a,1,a.length-1);
            for(int i = 1;i < a.length;i++){
                System.out.print(a[i]+" ");
            }
        }
       
        public static void quickSort(int[] a,int low,int high){
            if(low < high){
                int pivot = partion_1(a, low, high);
                quickSort(a, low, pivot-1);
                quickSort(a, pivot+1, high);
            }
        }
        //method1   
        public static int partion_1(int[] a,int low,int high){
            a[0] = a[low];
            int pivot = a[low];
            while(low<high){
                while(low < high && a[high] >= pivot){
                    high--;
                }
                a[low] = a[high];
                while(low < high && a[low] <= pivot){
                    low++;
                }
                a[high] = a[low];
            }
            a[low] = a[0];
            return low;
        }
        //method2   
        public static int partion_2(int[] a,int low,int high){
            int pivot = a[low];
            while(low<high){
                while(low < high && a[high] >= pivot){
                    high--;
                }
                while(low < high && a[low] < pivot){//不能都加‘=’号,否则可能high跑到low前面
                    low++;
                }
                int temp = a[high];
                a[high] = a[low];
                a[low] = temp;
            }
            return low;
        }
    }

    补充两个全面介绍排序算法的链接:

    wiki

    王汝金

  • 相关阅读:
    宏定义问题
    (转载)(int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
    boolalpha的作用
    一些小细节
    HTTP Keep-Alive的作用
    数据库三大范式
    laravel 安装语言包
    MySQL存储引擎中的MyISAM和InnoDB区别详解
    推荐一款超好用的工具cmder
    如何保证代码质量
  • 原文地址:https://www.cnblogs.com/williamxiao/p/3499944.html
Copyright © 2020-2023  润新知