归并排序-递归

xiaoxiao2021-02-28  130

#include<stdio.h> #define num 10 int a[num]; void Merging(int a[],int first,int mid,int end) { int i=first,m=mid; int j=mid+1,n=end; int k=0; int temp[num]; while(i<=m&&j<=n) { if(a[i]<a[j])temp[k++]=a[i++]; else temp[k++]=a[j++]; } while(i<=m) { temp[k++]=a[i++]; } while(j<=n) { temp[k++]=a[j++]; } for(int i=0;i<k;i++){ a[first+i]=temp[i]; } } void merge_sort(int a[], int start, int end) { int mid = (start+end)/2; if(start<end) { merge_sort(a, start, mid); merge_sort(a, mid+1, end); Merging(a, start, mid, end); } } int main() { printf("Please input a array: "); for(int i=0;i<num;i++){ scanf("%d",&a[i]); } merge_sort(a,0,num-1); printf("After the sort: "); for(int i=0;i<num;i++){ printf("%d ",a[i]); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-43798.html

最新回复(0)