什么是合并排序算法
合并排序是用分治策略实现对n个元素进行排序的算法,其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成要求的集合。
思路:对集合不断进行拆分,直至集合中只剩一个元素为止。再调用合并排序算法,将每一个子集合的元素进行排序,并将排序后的结果保存在临时数组中,再将临时数组赋值给初始数组即可。
#include <stdio.h>
#include <stdlib.h>
#define size 7
void mergesort(int arr[],int left,int right);
void merge(int arr[],int left,int middle,int right);
int main(){
int arr[size];
printf("请输入数字:\n");
for(int i=0;i<size;i++){
scanf("%d",&arr[i]);
}
printf("排序前:\n");
for(int i=0;i<size;i++){
printf("%d\t",arr[i]);
}
mergesort(arr,0,size-1);