日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

丰富自己的代码库-快速排序

發布時間:2024/1/17 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 丰富自己的代码库-快速排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一些常用的代碼,和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

總結

以上是生活随笔為你收集整理的丰富自己的代码库-快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。