首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

排序算法-归并排序

2012-07-22 
排序算法---归并排序#include stdio.hvoid merge(int a[], int tmp[],int pleft, int pright, int right

排序算法---归并排序

#include <stdio.h>void merge(int a[], int tmp[],int pleft, int pright, int rightend){        int leftend=pright-1;        int num=rightend-pleft+1;        int pos=pleft;        while(pleft<=leftend && pright<=rightend)        {                if(a[pleft]<=a[pright])                        tmp[pos++]=a[pleft++];                else                        tmp[pos++]=a[pright++];        }        while(pleft<=leftend)                tmp[pos++]=a[pleft++];        while(pright<=rightend)                tmp[pos++]=a[pright++];        int i;        for(i=0;i<num;i++,rightend--)                a[rightend]=tmp[rightend];}void msort(int a[], int tmp[], int left, int right){        int mid=(left+right)/2;        if(left<right)        {                msort(a,tmp,left,mid);                msort(a,tmp,mid+1,right);                merge(a,tmp,left,mid+1,right);        }}void merge_sort(int a[], int n){        int tmp=malloc(n*sizeof(int));        if (tmp!=NULL)        {                msort(a,tmp,0,n-1);                free(tmp);        }        else                printf("error!\n");}
?

热点排行