本博停更 新部落格:dengwenhuo.cn
阿新 • • 發佈:2019-01-04
主要對數目多的數 拆分再排 總的來說耗時還蠻少的 具體函式的操作看圖片
看了一下書 寫了一個 感覺不是特別好 畢竟一般調函式sort
#include <stdio.h> #include <malloc.h> void bin(int *a,int *b,int start,int mid,int end) { int k=0; int i=start,j=mid,m=mid+1,n=end; while(i<=j && m<=n) { if(a[i]<=a[m]) b[k++]=a[i++]; else b[k++]=a[m++]; } //對兩個數列的頭 看哪個大 直到一個結束 然後另外一個剩下的就接進來 while(i<=j) b[k++]=a[i++]; while(m<=n) b[k++]=a[m++]; for(i=0;i<k;i++) a[start+i]=b[i]; //將排好序的序列 替代原數列的數 } void gui(int *a,int *b,int start,int end) { if(start<end) { int mid=(start+end)/2; gui(a,b,start,mid); //拆分成前半列 gui(a,b,mid+1,end); //後半列 直接到剩下一個 然後一個一個接起來排 bin(a,b,start,mid,end); //將兩序列排序 } } int main() { int a[]={6,3,11,55,33,767,35,8,62,70,23,10}; int *b; b=(int *)malloc(sizeof(int)*12); //申請空間 gui(a,b,0,11); for(int i=0;i<12;i++) printf("%d ",a[i]); return 33; }
<img src="https://img-blog.csdn.net/20150612092001541?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQTg1Mjg1Mjg1Mjg1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: Arial, Helvetica, sans-serif;" alt="" />