丰富自己的代码库-快速排序
一些常用的代碼,和demo一定要保留,對于一個程序員的成長就是不斷 學習,實踐,積累,除了少數的天才外, 絕大多數程序員的發展都要經歷的幾步,這里重點說一下積累,看到一些好的代碼活著功能復雜的算法,方法,就把它收到自己的代碼庫里,至于自己的代碼庫 其實就是個本地文件夾,級別上應該跟 你自己的代碼平級,建議存成.hpp文件,即頭文件里包含實現,這樣既保留了源碼,也可以快速引用。同時這個文件夾最好添加的環境變量中,以便使用的時候直接引用
?
下面來說說放入代碼庫的第一個算法程序,快速排序,網上對于這個解釋很多,其中有些是大而化之,看了根本不知所謂,學習算法還是重點了解過程,編碼終究是個小事兒。
快速排序 的過程其實很簡單,
用我自己理解的方式解釋就是
首先 以第一個節點為準(key),以某種手段讓key交換到自己排序后應該在的位置上,同時保證左邊的數都小于這個key,右邊的數都大于這個key(如果是從大到小排序則是左邊的都大于key右邊的都小于key)
如 集合 {3,1,5,2,4} 經過上述處理就回得到結果 {1,2,3,5,4} 也就是說3(key)已經抵達正確為止,同時把比三小的都放到了左邊,比三大的都放到了右邊
遞歸key的左邊 子集 直至剩下一個元素為止
遞歸key的右邊 子集 直至剩下一個元素為止
以下為代碼實現
template <typename T>
void QuickSort(T a[],int low,int high)
{
if(low >= high)return;
if(!a)return;
int first = low;
int last = high;
int key = a[first];
while(last>first)
{
while(last>first&&a[last]>=key)
{
last--;
}
a[first] = a[last];
while(last>first&&a[first]<=key)
{
first++;
}
a[last] = a[first];
}
a[first]=key;
QuickSort(a,low,first-1);
QuickSort(a,first+1,high);
}
轉載于:https://www.cnblogs.com/yangyang12138/p/6073106.html
總結
以上是生活随笔為你收集整理的丰富自己的代码库-快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【黑金ZYNQ7000系列原创视频教程】
- 下一篇: 并不算复杂的正则表达式基础