#include<stdio.h> int merge(int unsortedarr[],int lb,int rb,int len,int sortedarr[]) { int i=lb,j=rb,k=0; while(i<rb&&j<=len) { if(unsortedarr[i]<unsortedarr[j]) sortedarr[k++]=unsortedarr[i++]; else sortedarr[k++]=unsortedarr[j++]; } while(i<rb) sortedarr[k++]=unsortedarr[i++]; while(j<=len) sortedarr[k++]=unsortedarr[j++]; for(i=lb,j=0;j<k;i++,j++) unsortedarr[i]=sortedarr[j]; return 0; } int mergesort(int arr[],int b,int len,int sarr[] ) { int mid; if(b<len) { mid=(b+len)/2; mergesort(arr,b,mid,sarr); mergesort(arr,mid+1,len,sarr); merge(arr,b,mid+1,len,sarr); } return 1; } int show(int a[],int len) { int i=0; for(;i<len;i++) printf("%d ",a[i]); printf("\n"); } int main () { int a[6]={21,13,1,32,562,15}; int b[6]={0}; show(a,6); //merge(a,0,1,1,b); //mergesort(a,0,1,b); // mergesort(a,2,3,b); //merge(a,2,3,3,b); // merge(a,0,2,3,b); mergesort(a,0,5,b); show(a,6); getchar(); return 0; }
时间: 2024-10-12 04:26:34