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

首頁 > 編程 > C > 正文

C語言合并排序及實例代碼

2020-01-26 14:30:20
字體:
來源:轉載
供稿:網友

歸并排序也稱合并排序,其算法思想是將待排序序列分為兩部分,依次對分得的兩個部分再次使用歸并排序,之后再對其進行合并。僅從算法思想上了解歸并排序會覺得很抽象,接下來就以對序列A[0], A[l]…, A[n-1]進行升序排列來進行講解,在此采用自頂向下的實現方法。

操作步驟如下:

(1)將所要進行的排序序列分為左右兩個部分,如果要進行排序的序列的起始元素下標為first,最后一個元素的下標為last,那么左右兩部分之間的臨界點下標mid=(first+last)/2,這兩部分分別是A[first … mid]和A[mid+1 … last]。

(2)將上面所分得的兩部分序列繼續按照步驟(1)繼續進行劃分,直到劃分的區間長度為1。

(3)將劃分結束后的序列進行歸并排序,排序方法為對所分的n個子序列進行兩兩合并,得到n/2或n/2+l個含有兩個元素的子序列,再對得到的子序列進行合并,直至得到一個長度為n的有序序列為止。

下面通過一段代碼來看如何實現歸并排序。

#include <stdio.h>#include <stdlib.h>#define N 7void merge(int arr[], int low, int mid, int high){ int i, k; int *tmp = (int *)malloc((high-low+1)*sizeof(int)); //申請空間,使其大小為兩個 int left_low = low; int left_high = mid; int right_low = mid + 1; int right_high = high; for(k=0; left_low<=left_high && right_low<=right_high; k++){ // 比較兩個指針所指向的元素  if(arr[left_low]<=arr[right_low]){   tmp[k] = arr[left_low++];  }else{   tmp[k] = arr[right_low++];  } } if(left_low <= left_high){ //若第一個序列有剩余,直接復制出來粘到合并序列尾 //memcpy(tmp+k, arr+left_low, (left_high-left_low+l)*sizeof(int)); for(i=left_low;i<=left_high;i++)  tmp[k++] = arr[i]; } if(right_low <= right_high){ //若第二個序列有剩余,直接復制出來粘到合并序列尾 //memcpy(tmp+k, arr+right_low, (right_high-right_low+1)*sizeof(int));  for(i=right_low; i<=right_high; i++)   tmp[k++] = arr[i]; } for(i=0; i<high-low+1; i++)  arr[low+i] = tmp[i]; free(tmp); return;}void merge_sort(int arr[], unsigned int first, unsigned int last){ int mid = 0; if(first<last){  mid = (first+last)/2; /* 注意防止溢出 */  /*mid = first/2 + last/2;*/  //mid = (first & last) + ((first ^ last) >> 1);  merge_sort(arr, first, mid);  merge_sort(arr, mid+1,last);  merge(arr,first,mid,last); } return;}int main(){ int i; int a[N]={32,12,56,78,76,45,36}; printf ("排序前 /n"); for(i=0;i<N;i++)  printf("%d/t",a[i]); merge_sort(a,0,N-1); // 排序 printf ("/n 排序后 /n"); for(i=0;i<N;i++)  printf("%d/t",a[i]); printf("/n"); system("pause"); return 0;}

運行結果:

排序前

32    12    56    78    76    45    36

排序后

12    32    36    45    56    76    78

分析上面的運行結果,通過歸并排序成功地實現了對給定序列的排序操作。接下來通過圖來了解歸并排序的具體操作流程。

在下圖先對所要進行排序的序列進行分解,直到分為單個元素為止,然后將其進行兩兩合并。由于最終分解成單個元素,因此在合并的時候.將小數放在前面,大數放在后面,得到一個有序序列。接下來對兩個相連的有序序列進行排序,先比較有序序列中的第一個元素,將較小的元素放入臨時數組中,接著將較小元素所在數組的下一個元素與另一個數組中的較小元素比較,同樣將較小元素放入臨時數組中,依次進行,直到兩個數組的所有元素都放入臨時數組中,最后再將臨時數組的元素放入原始數組中的對應位置。

以上就是對合并排序的詳細講解,希望對你有幫助。

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区私人高清影院| 精品国产一区二区在线| 欧美在线观看一区二区三区| 国产丝袜精品视频| 欧美在线视频免费观看| 在线精品高清中文字幕| 日韩欧美综合在线视频| 91精品国产九九九久久久亚洲| 午夜免费日韩视频| 在线观看日韩欧美| 少妇精69xxtheporn| 亚洲国产精品高清久久久| 亚洲一区二区三区四区视频| 日韩av片永久免费网站| 亚洲缚视频在线观看| 一本色道久久88亚洲综合88| 久久久国产精彩视频美女艺术照福利| 国产成人精品电影久久久| 久久大大胆人体| 欧美视频在线看| 丝袜美腿精品国产二区| 亚洲精品国产品国语在线| 国产视频精品一区二区三区| 韩国19禁主播vip福利视频| 国模精品视频一区二区| 国外成人在线视频| 欧美日韩一二三四五区| 亚洲成人激情在线观看| 色狠狠久久aa北条麻妃| 日韩视频欧美视频| 精品露脸国产偷人在视频| 91超碰中文字幕久久精品| 亚洲精品白浆高清久久久久久| 欧美巨大黑人极品精男| 久久免费少妇高潮久久精品99| 91国产美女在线观看| 国产精品日韩在线| 国产精品国产自产拍高清av水多| 日韩欧美精品网址| 亚洲天堂免费在线| 亚洲国产精品成人av| 欧美日韩福利在线观看| 亚洲精品日产aⅴ| 成人乱人伦精品视频在线观看| 日本欧美爱爱爱| 亚洲嫩模很污视频| 一区二区三区视频免费| 亚洲女人被黑人巨大进入| 欧美日韩另类字幕中文| 欧美国产欧美亚洲国产日韩mv天天看完整| 懂色av中文一区二区三区天美| 911国产网站尤物在线观看| 亚洲人成人99网站| 久久免费视频观看| 国产精品国产三级国产aⅴ9色| 亚洲欧洲日本专区| 精品久久久久久电影| 久久精品国产免费观看| 中日韩美女免费视频网址在线观看| 久久影院免费观看| 九九热r在线视频精品| 亚洲欧美日韩国产成人| 欧美一二三视频| 成人高清视频观看www| 午夜精品免费视频| 91久久久久久久久久久久久| 在线免费看av不卡| 亚洲精品视频久久| 欧美性高潮床叫视频| 97涩涩爰在线观看亚洲| 亚洲片国产一区一级在线观看| 青青草国产精品一区二区| 国产97在线亚洲| 日韩精品中文字幕在线| 久久久久久网站| 中文字幕欧美日韩va免费视频| 精品视频—区二区三区免费| 国产日韩综合一区二区性色av| 91精品国产综合久久久久久久久| 91精品国产91久久久| 97视频在线观看亚洲| 亚洲综合第一页| 国产精品美女免费看| 亚洲精品动漫久久久久| 在线不卡国产精品| 国产欧美久久一区二区| 国产在线视频欧美| 午夜精品久久久久久久99热| 国产亚洲欧美日韩一区二区| 国内精品小视频| 国产成人精品日本亚洲专区61| 日韩中文字幕免费看| 欧美日韩国产麻豆| 欧美一级淫片aaaaaaa视频| 久热爱精品视频线路一| 国产精品午夜视频| 色妞在线综合亚洲欧美| 色综合久久天天综线观看| 欧美激情综合亚洲一二区| 欧美在线不卡区| 亚洲激情视频在线| 欧美日韩色婷婷| 亚洲精品美女免费| 日韩视频第一页| 色婷婷久久一区二区| 国产精品露脸av在线| 亚洲欧美制服丝袜| 国产精品扒开腿做爽爽爽的视频| 欧美区在线播放| 久久久99免费视频| 久久av中文字幕| 亚洲男人天堂2019| 美日韩精品视频免费看| 日韩人在线观看| 国产精品美女午夜av| 狠狠躁夜夜躁人人爽天天天天97| 国产成人精品日本亚洲专区61| 国产精品视频免费在线观看| 欧美性高潮床叫视频| 亚洲国产天堂久久综合网| 色妞色视频一区二区三区四区| 538国产精品一区二区在线| 亚洲国产精品人人爽夜夜爽| 亚洲free性xxxx护士hd| 国产成人一区二| 亚洲成人网久久久| 1769国产精品| 中文字幕精品一区久久久久| 精品综合久久久久久97| 亚洲欧美日韩一区二区三区在线| 国产一区二区日韩精品欧美精品| 中文字幕亚洲专区| 日本久久91av| 欧美大片免费观看| 久久久最新网址| 精品亚洲一区二区| 久久最新资源网| 精品久久久久久久大神国产| 国产精品久久久久av| 午夜欧美大片免费观看| 中文字幕精品一区久久久久| 国产精品自产拍在线观看| 国产一区二区三区18| 亚洲欧美资源在线| 亚洲第一综合天堂另类专| 亚洲欧美综合精品久久成人| 亚洲精品日韩欧美| 亚洲自拍av在线| 97免费视频在线播放| 国产精品视频区1| 欧洲成人在线观看| 日韩在线视频网站| 国产午夜精品一区二区三区| 成人欧美在线观看| 久久手机精品视频| 97色在线播放视频| 国产一区二区激情| 久久成人18免费网站| 亚洲色图日韩av| 欧美成人性生活| 欧美日韩成人黄色| 欧美视频第一页| www.国产精品一二区| 日本久久中文字幕|