分治演算法經典例項之歸併排序和快速排序

2021-10-07 06:24:26 字數 732 閱讀 9276

1. 歸併排序

class solution 

void mergesort(vector&nums, int start, int end)

void merge(vector& nums, int start, int mid, int end)

while(i <= mid) tmp[k++] = nums[i++];

while(j <= end) tmp[k++] = nums[j++];

for(int idx = start; idx <= end; idx++)

}};

2. 快速排序

class solution 

void quicksort(vector& nums, int left, int right)

int partition(vector& nums, int left, int right)

swap(nums[j], nums[left]);

return j;

}};

直接寫**,其實有一些邊界條件需要考慮。在acwing上看到了另乙份快速排序**,簡潔優雅,是我寫不出來的**。

void quick_sort(int q, int l, int r)

quick_sort(q, l, j), quick_sort(q, j + 1, r);

}

經典排序演算法之 歸併排序

1 思想 多次將兩個或兩個以上的有序表合併成乙個新的有序表。2 演算法時間複雜度 最好的情況下 一趟歸併需要n次,總共需要logn次,因此為o n logn 最壞的情況下,接近於平均情況下,為o n logn 說明 對長度為n的檔案,需進行logn 趟二路歸併,每趟歸併的時間為o n 故其時間複雜度...

經典排序演算法之歸併排序

原理,把原始陣列分成若干子陣列,對每乙個子陣列進行排序,繼續把子陣列與子陣列合併,合併後仍然有序,直到全部合併完,形成有序的陣列 舉例無序陣列 6 2 4 1 5 9 先看一下每個步驟下的狀態,完了再看合併細節 第一步 6 2 4 1 5 9 原始狀態 第二步 2 6 1 4 5 9 兩兩合併排序,...

經典排序演算法之歸併排序

python實現 歸併排序演算法,a是陣列,n表示陣列大小 merge sort a,n 遞迴呼叫函式 merge sort c a,p,r 歸併排序 defmerge sort arr list int merger sort c arr,0,len arr 1 def merger sort c...