經典排序演算法 - 快速排序Quick sort
原理,通過一趟掃描將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排
序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列
舉個例子
如無序陣列[6 2 4 1 5 9]
a),先把第一項[6]取出來,
用[6]依次與其餘項進行比較,
如果比[6]小就放[6]前邊,2 4 1 5都比[6]小,所以全部放到[6]前邊
如果比[6]大就放[6]後邊,9比[6]大,放到[6]後邊,//6出列後大喝一聲,比我小的站前邊,比我大的站後邊,行動吧!霸氣十足~
一趟排完後變成下邊這樣:
排序前 6 2 4 1 5 9
排序後 2 4 1 5 6 9
b),對前半拉[2 4 1 5]繼續進行快速排序
重複步驟a)後變成下邊這樣:
排序前 2 4 1 5
排序後 1 2 4 5
前半拉排序完成,總的排序也完成:
排序前:[6 2 4 1 5 9]
排序後:[1 2 4 5 6 9]
排序結束
以下程式碼實現僅供參考
static int partition(int[] unsorted, int low, int high) { int pivot = unsorted[low]; while (low < high) { while (low < high && unsorted[high] > pivot) high--; unsorted[low] = unsorted[high]; while (low < high && unsorted[low] <= pivot) low++; unsorted[high] = unsorted[low]; } unsorted[low] = pivot; return low; } static void quick_sort(int[] unsorted, int low, int high) { int loc = 0; if (low < high) { loc = partition(unsorted, low, high); quick_sort(unsorted, low, loc - 1); quick_sort(unsorted, loc + 1, high); } } static void Main(string[] args) { int[] x = { 6, 2, 4, 1, 5, 9 }; quick_sort(x, 0, x.Length - 1); foreach (var item in x) { Console.WriteLine(item + ","); } Console.ReadLine(); }
相關文章
- 快速排序(Quick Sort)排序UI
- 快速排序 (Quick Sort)排序UI
- Sorting 排序演算法: Quick Sort 快速排序排序演算法UI
- 快速排序演算法(Quick_Sort)排序演算法UI
- 排序演算法之「快速排序(Quick Sort) _c++ 」排序演算法UIC++
- 經典演算法之快速排序演算法排序
- 排序演算法(七大經典排序演算法)排序演算法
- [經典排序演算法][集錦]排序演算法
- 經典排序演算法回顧:排序演算法
- 排序演算法-氣泡排序(Bubble Sort)排序演算法
- 十大經典排序演算法之氣泡排序排序演算法
- Array.sort 演算法原理(插入排序\快速排序in-place實現)演算法排序
- 白話經典演算法系列之六 快速排序 快速搞定 【轉】演算法排序
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 排序演算法-快速排序排序演算法
- 排序演算法——快速排序排序演算法
- 排序演算法 - 快速排序排序演算法
- JavaScript實現經典排序演算法JavaScript排序演算法
- 經典排序演算法PHP實現排序演算法PHP
- 10大經典排序演算法動畫排序演算法動畫
- 幾種經典的排序演算法排序演算法
- 經典排序之選擇排序(Java)排序Java
- 排序演算法(3)插入排序(Insertion Sort)排序演算法
- 排序演算法之「插入排序(Insertion Sort)」排序演算法
- 排序演算法之「歸併排序(Merge Sort)」排序演算法
- 排序演算法之 '快速排序'排序演算法
- #排序演算法#【4】快速排序排序演算法
- 《排序演算法》——快速排序(Java)排序演算法Java
- 排序sort排序
- sort排序排序
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- golang sort.Sort () 排序演算法學習Golang排序演算法
- 用 PHP 實現經典排序演算法PHP排序演算法
- 經典排序演算法 — C#版本(中)排序演算法C#
- 經典排序演算法 — C# 版(上)排序演算法C#
- 經典排序演算法及其 Java 實現排序演算法Java
- 經典演算法之折半插入排序演算法排序