歸并排序——如何使用golang和python實現(xiàn)?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
歸并排序
思路:將數(shù)組不斷二分,然后合并為有序數(shù)組
C++實現(xiàn):
void mergeSort(T arr[], int left,int right) { //對arr[left,right]的范圍進行排序 if (left >= right) return; int mid = (left + right) / 2; mergeSort(arr, left, mid); mergeSort(arr, mid + 1, right); merge(arr, left, mid, right); //合并兩部分 } template<typename T> void __merge(T arr[], int left, int mid, int right) { //將arr[left,mid] 和 arr[mid+1,right] 兩部分進行歸并 T *tmp=new T[right-left+1]; for (int i = left; i <= right; i++) tmp[i - left] = arr[i]; //先把arr(需要合并的左右片段) 復制給tmp int i = left, j = mid + 1; // i 做為左半部分的指針 j作為右半部分的指針 for (int k = left; k <= right; k++) { if (i > mid) { // 左半部分 已經(jīng)合入完了,將右半部分剩下的 全部合入 arr[k] = tmp[j - left]; j++; } else if (j > right) { // 右半部分 已經(jīng)合入完了,將左半部分剩下的 全部合入 arr[k] = tmp[i - left]; i++; } else if (tmp[i - left] < tmp[j - left]) { arr[k] = tmp[i - left]; i++; } else { arr[k] = tmp[j - left]; j++; } } delete[] tmp; }
分享標題:歸并排序——如何使用golang和python實現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://jinyejixie.com/article48/gpsep.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、動態(tài)網(wǎng)站、建站公司、定制開發(fā)、網(wǎng)站策劃、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容