生活随笔
收集整理的這篇文章主要介紹了
排序算法大集锦_合并排序_1(分治思想)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這一系列博客的特點就是——給出每趟排序的結果
本來想著好好寫一下過程,弄個圖片什么的,不過覺得網上的解析太多了,都比較好,所以這些博客就算是對自己的總結吧。
#include?<stdio.h>
#include?<limits.h>
#include?<malloc.h>int?a[10]={2,8,5,7,4,3,1,9,6,10};void?merge(int?*m,?int?x,?int?y,?int?z)
{int?b1,b2,i,j,k;b1=y-x+1;b2=z-y;int?*tm1=(int*)malloc(sizeof(int)*(b1+1));int?*tm2=(int*)malloc(sizeof(int)*(b2+1));for(i=0;i<b1;i++)tm1[i]=m[i+x];for(j=0;j<b2;j++)tm2[j]=m[j+y+1];tm1[i]=tm2[j]=INT_MAX;for(k=x,i=0,j=0;k<=z;k++){if?(tm1[i]<tm2[j]){m[k]=tm1[i];i++;}?else{m[k]=tm2[j];j++;}}free(tm1);free(tm2);
}void?MergeSort(int?*m,int?n1,?int?n2)
{if(n1<n2){int?n=(n1+n2)/2;MergeSort(m,n1,n);MergeSort(m,n+1,n2);merge(m,n1,n,n2); for(int?t=0;t<10;t++)printf("%d?",m[t]);printf("\n");}
}int?main()
{int?i;for(i=0;i<10;i++)printf("%d?",a[i]);printf("\n排序后\n");MergeSort(a,0,9);printf("\n最終結果\n");for(i=0;i<10;i++)printf("%d?",a[i]);printf("\n");return?0;
}
運行結果
轉載于:https://blog.51cto.com/anglecode/1640427
總結
以上是生活随笔為你收集整理的排序算法大集锦_合并排序_1(分治思想)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。