排序演算法---快速排序
阿新 • • 發佈:2019-02-04
快速排序是對氣泡排序的改進,通過一趟排序將要排序的資料分割成獨立的兩個部分,其中一部分的所有資料比另一個部分的所有資料要小,再按照這種方法遞迴進行,使得整個資料變成有序序列。
快速排序有一個比較簡單的解法--遞迴,具體的實現程式碼如下:
package com.threeTop.www; /** * 快速排序的遞迴實現 * @author wjgs * */ public class QuickSort { private int[] array; //初始化操作 public QuickSort(int []array) { this.array=array; } public void sort() { quicksort(array,0,array.length-1); } /** * 遞迴實現快速排序過程 * @param array * @param i * @param j */ private void quicksort(int[] array, int begin, int end) { // TODO Auto-generated method stub if(begin<end) { int key=array[begin]; //設定第一個元素為基準元素 int i=begin; int j=end; while(i<j) { while(i<j&&array[j]>key) { j--; } if(i<j) { array[i]=array[j]; i++; } while(i<j&&array[i]<key) { i++; } if(i<j) { array[j]=array[i]; j--; } array[i]=key; //放置基準元素 quicksort(array,begin,i-1); quicksort(array,i+1,end); } } } public void print() { for(int i=0;i<array.length;i++) { System.out.print(array[i]+" "); } } public static void main(String[] args) { // TODO Auto-generated method stub int []array={5,9,1,9,5,3,7,6,1,10}; QuickSort quicksort=new QuickSort(array); quicksort.sort(); quicksort.print(); } }
快速排序的優化
(1)三者取中法:頭、尾、中間取中間數作為基準值
(2)根據規模大小改變演算法
(3)其他分割槽方案考慮:例如分三個區間
(4)並行處理:採用計算機多執行緒並行處理來提高效率