C++快速排序與歸併排序的實現(LeetCode 912)
快速排序
//快速排序
class Solution {
public:
int Partions(vector<int>& nums,int start,int end){
if(nums.size()==0||start<0||end>=nums.size()){
return 0;
}
int index=start;//隨機數取每段的第一個元素即可
swap(nums[index],nums[end]);
int small=start-1;
for(index=start;index<end;++index){
if(nums[index]<nums[end]){
++small;
swap(nums[small],nums[index]);
}
}
++small;
swap(nums[small],nums[end]);
return small;
}
void QuickSort(vector<int>& nums,int start,int end){
if(start==end) return;
int index=Partions(nums,start,end);
if(index>start)
QuickSort(nums,start,index-1);
if(index<end)
QuickSort(nums,index+1,end);
}
vector<int> sortArray(vector<int>& nums) {
int length=nums.size();
int start=0;
int end=length-1;
QuickSort(nums,start,end);
return nums;
}
};
歸併排序
// 歸併排序
class Solution {
public:
vector<int> mergeSort(vector<int>& nums, int l, int r) {
if (l > r) return {};
if (l == r) return {nums[l]};
vector<int> res;
int m = l + (r - l) / 2;
auto ln = mergeSort(nums, l, m);
auto rn = mergeSort(nums, m + 1, r);
int i = 0;
int j = 0;
while (i < ln.size() && j < rn.size()) {
if (ln[i] <= rn[j]) {
res.push_back(ln[i++]);
} else {
res.push_back(rn[j++]);
}
}
while (i < ln.size()) res.push_back(ln[i++]);
while (j < rn.size()) res.push_back(rn[j++]);
return res;
}
vector<int> sortArray(vector<int>& nums) {
return mergeSort(nums, 0, nums.size() - 1);
}
};
相關文章
- php實現 歸併排序,快速排序PHP排序
- 歸併排序與快速排序的一個實現與理解排序
- 歸併排序與快速排序的簡明實現及對比排序
- 快速排序&&歸併排序排序
- 氣泡排序、歸併排序與快速排序比較排序
- 四、歸併排序 && 快速排序排序
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- Sort排序專題(7)歸併排序(MergeSort)(C++實現)排序C++
- O(lgn)的三種排序,快速排序、歸併排序、堆排序排序
- go 實現歸併排序Go排序
- Java實現歸併排序Java排序
- 使用 Swift 實現歸併排序Swift排序
- [排序] 歸併排序排序
- 歸併和快速排序思想的延伸排序
- 歸併排序MergeSort的C實現排序
- 歸併排序的非遞迴實現排序遞迴
- ForkJoin和氣泡排序組合實現的歸併排序排序
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- 利用java實現插入排序、歸併排序、快排和堆排序Java排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 歸併排序排序
- MergeSort,歸併排序的Python實現排序Python
- 用“歸併”改進“快速排序” (轉)排序
- 【分治演算法】歸併排序,快速排序和漢諾塔演算法排序
- 三種語言實現歸併排序(C++/Python/Java)排序C++PythonJava
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- [C++]歸併排序(連結串列描述)C++排序
- 資料結構 歸併排序 C++資料結構排序C++
- 歸併排序--二路排序排序
- 排序演算法__歸併排序排序演算法
- 排序演算法:歸併排序排序演算法
- 歸併排序和基數排序排序
- 歸併排序--排序演算法排序演算法
- 排序演算法 - 歸併排序排序演算法
- 排序演算法——歸併排序排序演算法