合并排序

来源:互联网 发布:张大奕的淘宝店劣质 编辑:程序博客网 时间:2024/05/16 16:16

合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。

#include<stdio.h>#define m 7int a[m]={4,5,2,1,7,6,3};void mergesort(int a[],int left,int right){int mid;int b[m];int i,j,k;if(left==right)return;mid=(left+right)/2;mergesort(a,left,mid);mergesort(a,mid+1,right);i=left;j=m+1;k=left;while(i<=mid&&j<=right){if(a[i]<a[j]){b[k]=a[i];i++;k++;}else{b[k]=a[j];j++;k++;}}while(i<=mid){b[k]=a[i];i++;k++;} while(j>=right){b[k]=a[j];j++;k++;} for(k=left;k<=right;k++){a[k]=b[k];}}int main(){mergesort(a,0,m-1);for(int i=0;i<m;i++){printf("%d",a[i]);}}


原创粉丝点击