基础算法之快速排序Quick Sort
生活随笔
收集整理的這篇文章主要介紹了
基础算法之快速排序Quick Sort
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原理
快速排序(Quicksort)是對冒泡排序的一種改進。
例子
將無序數組[3,6,4,2,5,1]進行快速排序
1),先把第一項[3]取出來作為基準依次與其余項進行比較(3出列后大喝一聲,比我小的站前邊,比我大的站后邊,行動吧!霸氣側漏~),
如果比[3]小就放[3]前邊,2 1都比[3]小,全部放到[3]前邊
如果比[3]大就放[3]后邊,6 4 5比[3]大,全部放到[3]后邊,
一趟排完后變成下邊這樣:
排序前:3,6,4,2,5,1
排序后:2,1,3,6,4,5
?
2),對前面一半[2,1]繼續進行快速排序
重復步驟1)后變成下邊這樣:
排序前:2,1
排序后:1,2
前面一半排序完成,總的數組為:
排序前:2,1,3,6,4,5
排序后:1,2,3,6,4,5
?
3),對后面一半[6,4,5]繼續進行快速排序
重復步驟1)后變成下邊這樣:
排序前:6,4,5
排序后:4,5,6
后面一半排序完成,總的數組為:
排序前:1,2,3,6,4,5
排序后:1,2,3,4,5,6
至此,排序結束
動畫演示
代碼參考
static void Main(string[] args){int[] intArray = { 3, 6, 4, 2, 5, 1 };Quick_Sort(intArray, 0, intArray.Length - 1);foreach (var item in intArray){Console.WriteLine(item);}Console.ReadLine();}// 快速排序static void Quick_Sort(int[] unsorted, int low, int high){int loc;if (low < high){loc = partition(unsorted, low, high);Quick_Sort(unsorted, low, loc - 1);Quick_Sort(unsorted, loc + 1, high);}}/// <summary>/// 分區操作/// </summary>/// <param name="unsorted">帶排序數組</param>/// <param name="low">起始位置</param>/// <param name="high">結束位置</param>/// <returns>排序后基準所在位置</returns>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;}參考資料
維基百科http://en.wikipedia.org/wiki/Quicksort
轉載于:https://www.cnblogs.com/jackbase/p/4272278.html
總結
以上是生活随笔為你收集整理的基础算法之快速排序Quick Sort的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用VS连接oracle数据库时ORA-1
- 下一篇: 【SICP练习】3 练习1.7