zoukankan      html  css  js  c++  java
  • 七大基本排序算法之快速排序

    /**
     * 快速排序
     * @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

    王汝金

  • 相关阅读:
    PHP迭代生成器---yield
    array_chunk — 将一个数组分割成多个
    php array_change_key_case
    PHP trait介绍
    mysql视图
    mysql常见内置函数
    MySQL表复制
    二分查找算法(折半查找算法)
    使用SplFixedArray创建固定大小的数组
    Frameset Example
  • 原文地址:https://www.cnblogs.com/williamxiao/p/3499944.html
Copyright © 2011-2022 走看看