亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

數據結構之歸并排序的實例詳解

2020-01-26 13:56:18
字體:
來源:轉載
供稿:網友

歸并排序

基本思想                                                                                                

歸并排序是建立在二路歸并和分治法的基礎上的一個高效排序算法,將已有序的子序列合并,得到完全有序的序列;即先使每個子序

列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為二路歸并。

將待排序序列R[0...n-1]看成是n個長度為1的有序序列,將相鄰的有序表成對歸并,得到n/2個長度為2的有序表;將這些有序序列

再次歸并,得到n/4個長度為4的有序序列;如此反復進行下去,最后得到一個長度為n的有序序列。所以呢,我們總結一下歸并排序

其實就只有兩步:

分解:將有序序列不斷地分裂,直到每個區間都只有一個數據為止.

合并:將兩個區間合并為一個有序的區間,一直合并知道只有一個區間為止.

圖是我偷來的,但是學習是認真的.

分解的過程我們很容易想明白的,用遞歸就可以.但是我們今天最主要的步驟是合并,你要將兩個區間合并為一個有序的區間你會怎么思考呢?

這個非常簡單,只要從比較二個數列的第一個數,誰小就先取誰,取了后就在對應數列中刪除這個數。然后再進行比較,如果有數

列為空,那直接將另一個數列的數據依次取出即可。

代碼實現:

//將有序數組a[]和b[]合并到c[]中  void MemeryArray(int a[], int n, int b[], int m, int c[])  {    int i, j, k;      i = j = k = 0;    while (i < n && j < m)    {      if (a[i] < b[j])        c[k++] = a[i++];      else        c[k++] = b[j++];     }      while (i < n)      c[k++] = a[i++];      while (j < m)      c[k++] = b[j++];  }  

其實我們發現這種做法效率其實還是蠻高的,效率達到了O(N).現在我們解決了合并的問題.

現在總的來看一下歸并排序的做法,通過先遞歸的分解數列(將數列分解成只有一個元素的區間),再合并數列就完成了歸并排序。

代碼實現                                                                                                 

//將有二個有序數列a[first...mid]和a[mid...last]合并。  void mergearray(int a[], int first, int mid, int last, int temp[])  {    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];  }  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); //再將二個有序數列合并    }  }    bool MergeSort(int a[], int n)  {    int *p = new int[n];    if (p == NULL)      return false;    mergesort(a, 0, n - 1, p);    delete[] p;    return true;  }  

總結                                                                                                  

歸并排序的效率是比較高的,設數列長為N,將數列分開成小數列一共要logN步,每步都是一個合并有序數列的過程,時間復雜度

可以記為O(N),故一共為O(N*logN)。因為歸并排序每次都是在相鄰的數據中進行操作,所以歸并排序在O(N*logN)的幾種排序方

法(快速排序,歸并排序,希爾排序,堆排序)也是效率比較高的。

算法名稱  最差時間復雜度  平均時間復雜度  最優時間復雜度  空間復雜度  穩定性

歸并排序    O(NlogN)    O(NlogN)              O(NlogN)       O(n)        穩定

所有排序當中用的最多的就是堆排序,快速排序,歸并排序.

若從空間復雜度來考慮:首選堆排序,其次是快速排序,最后是歸并排序。

若從穩定性來考慮,應選取歸并排序,因為堆排序和快速排序都是不穩定的。

若從平均情況下的排序速度考慮,應該選擇快速排序。

以上就是數據結構中歸并排序的實例詳解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成在人线av| 国内精品小视频在线观看| 欧美精品videosex性欧美| 亚洲欧美国产一区二区三区| 国语自产精品视频在免费| 激情懂色av一区av二区av| 日韩在线欧美在线| 国产精品高潮呻吟久久av无限| 欧美激情区在线播放| 免费av在线一区| 欧美亚洲另类制服自拍| 日韩有码片在线观看| 欧美午夜美女看片| 成人日韩av在线| 欧洲亚洲免费视频| 国产精品99久久久久久www| 欧美精品videossex88| 欧美丰满老妇厨房牲生活| 96sao精品视频在线观看| 亚洲美女在线观看| 成人国产精品久久久| 国产99久久久欧美黑人| 国产亚洲日本欧美韩国| 成人精品aaaa网站| 亚洲欧洲激情在线| 亚洲免费伊人电影在线观看av| 欧美一区二区三区免费视| 亚洲国产精品福利| 一区二区欧美激情| 久久久国产精品一区| 北条麻妃久久精品| 亚洲欧美国产一本综合首页| 激情成人中文字幕| 欧美国产第二页| 成人高清视频观看www| 国产欧美一区二区三区在线看| 成人综合国产精品| 亚洲图片在线综合| 亚洲高清不卡av| 欧美日产国产成人免费图片| 亚洲成人久久久| 91极品女神在线| 亚洲国产精品字幕| 久久999免费视频| 一级做a爰片久久毛片美女图片| 91精品久久久久久久久久入口| 精品国内亚洲在观看18黄| 亚洲国产欧美一区| 亚洲а∨天堂久久精品9966| 日本一欧美一欧美一亚洲视频| 国产精品美女免费看| 91精品国产91久久久久久| 精品视频偷偷看在线观看| 亚洲人成自拍网站| 亚洲欧美中文日韩在线| 国产成人精品久久| 中文字幕日韩av| 欧美高清在线视频观看不卡| 精品magnet| 中文字幕一区二区三区电影| 午夜精品久久久久久久99黑人| 久久精品国产欧美激情| 亚洲娇小xxxx欧美娇小| 激情av一区二区| 久久久999精品| 国产精品久久久久久一区二区| 久久天天躁狠狠躁老女人| 国产精品影片在线观看| 中文字幕成人精品久久不卡| www亚洲欧美| 亚洲美女激情视频| 欧美性20hd另类| 欧美另类xxx| 日韩亚洲精品视频| 国产精品白丝jk喷水视频一区| 91亚洲精品久久久久久久久久久久| 久久久久99精品久久久久| 国产精品视频不卡| 亚洲影视中文字幕| 精品女同一区二区三区在线播放| 中文字幕在线日韩| 欧美小视频在线| 亚洲va码欧洲m码| 精品国产乱码久久久久久天美| 日韩精品免费综合视频在线播放| 亚洲自拍小视频免费观看| 久久久精品国产网站| 久久精品国产久精国产思思| 欧美激情伊人电影| 亚洲国产精久久久久久| 一区二区在线免费视频| 欧美视频二区36p| 精品久久久一区二区| 在线看福利67194| 亚洲欧美制服另类日韩| 国产精品视频地址| 日本中文字幕不卡免费| 日韩成人网免费视频| 亚洲伊人第一页| 日韩电影在线观看永久视频免费网站| 最新国产精品亚洲| 久久久免费观看视频| www.国产一区| 日韩在线视频线视频免费网站| 亚洲三级免费看| 亚洲精品国产拍免费91在线| 疯狂做受xxxx欧美肥白少妇| 欧美一区二区三区四区在线| 精品久久久一区二区| 国产福利精品视频| 日韩精品在线免费播放| 国产精品亚洲综合天堂夜夜| 九九精品在线播放| 精品一区二区三区电影| 日韩av在线一区二区| 2019中文字幕免费视频| 国产日产欧美a一级在线| 亚洲天堂第二页| 欧美性极品xxxx娇小| 国产精品成人va在线观看| 成人国产精品久久久| 日韩欧美中文字幕在线播放| 欧美第一页在线| 91丨九色丨国产在线| 91最新在线免费观看| 久久久久久国产精品| 国产大片精品免费永久看nba| 成人av色在线观看| 亚洲欧美国产高清va在线播| 亚洲丝袜一区在线| 亚洲国产精品网站| 欧美午夜视频在线观看| 91爱视频在线| 国产精品视频午夜| 亚洲精品aⅴ中文字幕乱码| 国产精品久久久久久久一区探花| 欧美国产亚洲视频| 日韩在线不卡视频| 国产欧美精品一区二区三区介绍| 欧美亚洲另类制服自拍| 欧美性生交大片免费| 国产日韩在线一区| 久久久久久亚洲精品中文字幕| 成人精品在线观看| 欧美性猛交xxxx免费看漫画| 欧美大全免费观看电视剧大泉洋| 亚洲成人精品视频| 成人在线激情视频| 欧美性猛交xxxx免费看久久久| 色先锋资源久久综合5566| 国产一区二区三区久久精品| 国产精品99久久久久久人| 午夜精品一区二区三区在线| 高潮白浆女日韩av免费看| 黄色精品一区二区| 成人亲热视频网站| 欧美一级淫片aaaaaaa视频| 中文字幕不卡av| 国产成人aa精品一区在线播放| 久久久久国色av免费观看性色| 久久久91精品| 这里只有精品在线播放| 国产suv精品一区二区三区88区| 国产精品综合网站|