1.求设计一个算法(用递归实现),实现对一个顺序表的数值排序。最好是用主流语言。谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/22 09:06:25
最好给补充一下说明
我对这个不是很了解
谢谢。

//归并排序

#include<stdio.h>
#include<string.h>

int num[2000];
int temp[2000];

void merge(int left,int right)
{
int center=(left+right)/2;
int i=left,j=center+1,help=left;
while(i<=center&&j<=right)
{
if(num[i]>num[j])
{
temp[help++]=num[j++];
}
else
{
temp[help++]=num[i++];
}
}
while(i<=center)
{
temp[help++]=num[i++];
}
while(j<=right)
{
temp[help++]=num[j++];
}
for(i=left;i<=right;i++)
num[i]=temp[i];
}

void mergesort(int left,int right)
{
if(right<=left)
return ;
int center=(left+right)/2;
mergesort(left,center);
mergesort(center+1,right);
merge(left,right);
}

//
归并排序算法
合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个