永发信息网

求数据结构课程设计(C语言)—排序综合!利用随机函数产生N个随机整数(2万以上),至少使用三种方法实现

答案:2  悬赏:40  手机版
解决时间 2021-03-23 09:46
求数据结构课程设计(C语言)—排序综合!利用随机函数产生N个随机整数(2万以上),至少使用三种方法实现
最佳答案
冒泡法
#include
#include
#include
#define N 10000
void init_array(int a[N],int n)
{
int i;
srand(time(NULL));
for(i=0;i a[i]=rand()%N;
}
}
void sort(int a[N],int n)
{
int i,j;
int t;
for(i=0;i for(j=0;j if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void display(int a[N],int n)
{
int i;
for(i=0;i printf("%d\n",a[i]);
}
}
int main()
{
int array[N];
init_array(array,N);
sort(array,N);
display(array,N);
return 0;
}

快速排序
#include
#include
#include
#define N 100240
int small_array[N];
int big_array[N];
void my_list(int a[],int n)
{
int i;
srand(time(NULL));
for(i=0;i a[i]=rand()%n;
}
int my_quick(int a[],int start,int end)
{
int i,eq;
int small_count=0,big_count=0;
eq=a[start];
if(start>=end) return;
for(i=start+1;i<=end;i++){
if(a[i] small_array[small_count]=a[i];
small_count++;
}
else{
big_array[big_count]=a[i];
big_count++;
}
}
for(i=0;i a[start+i]=small_array[i];
a[start+small_count]=eq;
for(i=0;i a[start+i+small_count+1]=big_array[i];
my_quick(a,start,start+small_count-1);
my_quick(a,start+small_count+1,end);

}
void display(int a[],int n)
{
int i;
for(i=0;i printf("%d\n",a[i]);
}
int main()
{
int array[N];
my_list(array,N);
my_quick(array,0,N-1);
display(array,N);
}

归并排序
#include
#include
#include
#define N 100240
void inti_list(int array[N],int n)
{
int i;
srand(time(NULL));
for(i=0;i array[i]=rand()%N;
}
}
void merge(int a[N],int l_start,int l_end,int r_end)
{
int i;
int n=l_start;
int temp[N];
int r_start=l_end+1;
int m=r_start;
for(i=n;i<=r_end;i++){
if(n<=l_end&&m<=r_end){
if(a[n] temp[i]=a[n];
n++;
}
else{
temp[i]=a[m];
m++;
}
}
else{
if(n>l_end){
temp[i]=a[m];
m++;
}
else if(m>r_end){
temp[i]=a[n];
n++;
}
}

}
for(i=l_start;i<=r_end;i++){
a[i]=temp[i];
}
}
int msort(int a[N],int start,int end)
{
if(start==end) return 0;
msort(a,start,(start+end)/2);
msort(a,(start+end)/2+1,end);
merge(a,start,(start+end)/2,end);
}
void display(int a[N],int n)
{
int i;
for(i=0;i printf("%d\n",a[i]);
}
}
int main()
{
int array[N];
inti_list(array,N);
msort(array,0,N-1);
display(array,N);
return 0;
}
选择排序

#include
#include
#include
#define N 10240
void inti_list(int array[],int n)
{
int i;
srand(time(0));
for(i=0;i array[i]=rand()%100000;
}
}
void buuble(int array[],int n)
{
int i,j,k,t,min;
for(i=0;i min=array[i];
for(j=i+1;j if(array[j] min=array[j];
k=j;
}
}
t=array[k];
array[k]=array[i];
array[i]=t;

}
}
void display(int array[],int n)
{
int i;
for(i=0;i printf("%d\n",array[i]);
}

}
int main()
{
int n=N;
int array[N];
inti_list(array,n);
buuble(array,n);
display(array,n);
return 0;
}

堆排序

#include
#include
#include
#define N 10240
void heap_sort(int a[],int i)
{
int t;
if(i==1) return;
if(a[i] t=a[i];
a[i]=a[i/2];
a[i/2]=t;
heap_sort(a,i/2);
}
else{
return;
}
}
void init_array(int a[],int n)
{
int i;
srand(time(NULL));
for(i=1;i<=n;i++){
a[i]=rand()%N;
}
}
void init_sort(int a[],int n)
{
int i;
for(i=1;i<=n;i++)
heap_sort(a,i);
}
void display(int a[],int n)
{
int i;
for(i=n;i>=1;i--)
printf("%d\n",a[i]);
}
void h_sort(int a[],int i,int j,int k,int n)
{
int t;
if(n if(n if(a[j]>=a[i]) return;
if(a[j] t=a[j];
a[j]=a[i];
a[i]=t;
return;
}
}
if(a[i]<=a[k]&&a[i]<=a[j]) return;
else{
if(a[j]<=a[k]){
t=a[j];
a[j]=a[i];
a[i]=t;
h_sort(a,j,2*j,2*j+1,n);
}
else if(a[j]>a[k]){
t=a[k];
a[k]=a[i];
a[i]=t;
h_sort(a,k,2*k,2*k+1,n);
}
}
}
void heapsort(int a[],int n)
{
int t;
t=a[n];
a[n]=a[1];
a[1]=t;
h_sort(a,1,2,3,n-1);
return;
}
int main()
{
int i;
int array[N+1];
init_array(array,N);
init_sort(array,N);
for(i=N;i>=1;i--){
heapsort(array,i);
}
display(array,N);
return 0;
}

够了吧 记得给我加分 还给你运行过了
全部回答
给你发了 不只3种 给你5种了 363173922的 记得给我加分 有问题加我再给你解决 没分就免谈 好了都给你搞定了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
带有晨字的爱情古诗词,带有明和辉的诗词,最
什么的简称是TF
北海建沅汽车销售服务有限公司地址在什么地方
使命召唤online农场怎么上房顶
一部彩色电视机显像管屏幕的面积约为0.25m2,
美的厨卫前锋专卖店地址在什么地方,想过去办
爱情牧羊人是什么意思,圣经中牧羊人是什么意
北京南苑机场到朝阳区东六环燕郊经济技术开发
企业创新成功的关键因素有哪些
不思议迷宫 天空战 电池包 怎么获取
东方巨龙腾紫气的下一句
女方要求离婚,两孩子的抚养权归谁
单选题下列现象中,能从分子运动的角度进行解
关于奉献和担当的诗歌,梦想与担当为主题的诗
华为网络拒绝接入怎么回事
推荐资讯
如何注册企业名称,企业(字号)名称预先核准申
赞美白切鸡好吃的句子,赞美炒菜好吃的句子
夏河至拉萨的飞机票多少钱,当天能买到票吗
膀胱手术后吃什么好,手术后的患者吃什么营养
赵将括母阅读答案
郑秀妍162为什么被称为短身
为什么总开关一定要在保险丝之前
断除善恶为什么取决于内心而不是外境
苋菜炒出来苦了怎么回事
谢师宴的不良现象
《水浒传》里特别塑造了四个坏女人:潘金莲、
布料要如何检验
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?