合并排序算法作业

mac2022-06-30  86

/*题目内容: 使用合并排序算法编程,对整数数组排序 输入描述 第一行输入元素个数,第二行输入要排序的数组 输出描述 排好序的数组 输入样例 7 2 5 4 1 3 7 6 输出样例 1 2 3 4 5 6 7 */

#include<stdio.h> #define MAX 100 int B[MAX]; int Merge(int A[],int n) { int mid,s1,s2,i,b; mid=n/2; s1=0;s2=mid; b=0; while(s1<mid&&s2<n) if(A[s1]<=A[s2]) B[b++]=A[s1++]; else B[b++]=A[s2++]; if(s1<mid) for(i=s1;i<mid;i++) B[b++]=A[i]; else for(i=s2;i<n;i++) B[b++]=A[i]; for(i=0;i<n;i++) A[i]=B[i]; return 1; } int MergeSort(int A[],int n) { if(n<=1) return 1; else { MergeSort(A,n/2); MergeSort(A+n/2,n-n/2); Merge(A,n); return 1; } } int main() { int a[1000],n,i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } MergeSort(a,n); for(i=0;i<n;i++) { printf("%d ",B[i]); } return 0; }
最新回复(0)