国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

排序--歸并排序

2019-11-08 03:03:27
字體:
來源:轉載
供稿:網友

基本原理:利用遞歸和分治的思想。原理見下圖: 利用歸并排序,對數組[10 4 6 3 8 2 5 7]進行排序(升序)。 這里寫圖片描述

復雜度分析:分割的次數為logN,共有N個數,時間復雜度為(N*logN)。

代碼實現(C)

#include <stdio.h> void mergearray(int a[], int first, int mid, int last, int temp[]) //將二個有序數列a[first...mid]和a[mid...last]合并//比較二個數列的第一個數,誰小就先取誰,取了后就在對應數列中刪除這個數。然后再進行比較,如果有數列為空,那直接將另一個數列的數據依次取出即可。{ int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i <= m && j <= n) { if (a[i] <= a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while (i <= m) temp[k++] = a[i++]; while (j <= n) temp[k++] = a[j++]; for (i = 0; i < k; i++) a[first + i] = temp[i]; //合并后的數列放在a[]中} void mergesort(int a[], int first, int last, int temp[]) { if (first < last) { int mid = (first + last) / 2; //將數列分割成二部分 mergesort(a, first, mid, temp); //遞歸分解數列:左邊有序 mergesort(a, mid + 1, last, temp); //右邊有序 mergearray(a, first, mid, last, temp); //依次將二個有序數列合并 } } int main(){ int a[] = {1,4,2,3,6,5,7,9,8,0}; int n = sizeof(a)/sizeof(a[0]); int b[n]; int i; mergesort(a,0,n-1,b); for(i=0; i<n; i++) {
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖远县| 平谷区| 镇原县| 卓尼县| 光山县| 乾安县| 金山区| 凌海市| 新兴县| 江口县| 怀来县| 城口县| 亚东县| 曲沃县| 九台市| 安丘市| 集安市| 德州市| 资溪县| 怀化市| 库车县| 大安市| 柏乡县| 顺平县| 喀喇沁旗| 织金县| 洪湖市| 芒康县| 铁力市| 桃园市| 融水| 云龙县| 察隅县| 西安市| 玉田县| 财经| 洪雅县| 锦州市| 左贡县| 吉首市| 墨竹工卡县|