归并排序

来源:互联网 发布:浙江华通云数据上市 编辑:程序博客网 时间:2024/06/09 14:07

归并排序:利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。可以用于外排序。


# include <stdio.h>void merge_sort(int a[],int b[],int low,int high);void merge(int a[],int b[],int low,int mid,int high);int main(void){int a[]={4165,46,41,984,531,6,4653,6,46,4,64,63};int b[100];//辅助数组 merge_sort(a,b,0,sizeof(a)/sizeof(a[0])-1); for (int i=0;i<sizeof(a)/sizeof(a[0]);++i)printf ("%d ",a[i]);return 0;}void merge_sort(int a[],int b[],int low,int high){if (low >= high)return;int mid = (low+high)/2;merge_sort(a,b,low,mid);//分治法 merge_sort(a,b,mid+1,high);////分治法 merge(a,b,low,mid,high);}void merge(int a[],int b[],int low,int mid,int high){int i,j,k;for (i=low;i<=high;++i)b[i] = a[i];i = low;j = mid+1;k = low;while(i <= mid && j <= high)//将b中的数据排序后存入a中 {if (b[i] <= b[j])a[k++] = b[i++];elsea[k++] = b[j++];}while(i<=mid)//将b中i~mid中的剩余元素存入a中 a[k++] = b[i++];while(j<=high)//将b中mid~high中的剩余元素存入a中 a[k++] = b[j++];}


0 0
原创粉丝点击