问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

已知序列(10,18,4,3,6,12,1,9,8)请用快速排序写出每一趟排序的结果.

发布网友 发布时间:2022-05-15 01:43

我来回答

1个回答

热心网友 时间:2023-11-21 14:49

源码:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
typedef struct{
int r[MAXSIZE+1];
int length;
}Sqlist;
typedef int RcdType;

void InsertSort(Sqlist &L)//直接插入排序
{
int i,j;
for(i=2;i<=L.length;i++)
if(L.r[i]<L.r[i-1])
{
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];
for(j=i-2;L.r[0]<L.r[j];j--)
L.r[j+1]=L.r[j];
L.r[j+1]=L.r[0];
}
}
/*SR原表
TR归并排序后的表
功能将有序的SR[i..m]和SR[m+1..n]归并成有序的TR[i..n]
*/
void Merge(RcdType *SR,RcdType *TR,int i,int m,int n)//归并排序
{
int k,j;
for(j = m+1,k = i;i <= m && j <= n;k++)
{
if(SR[i] < SR[j])
TR[k] = SR[i++];
else
TR[k] = SR[j++];
}
if(i<=m)
{
for(;i<=m;i++,k++)
TR[k] = SR[i];
}
if(j<=n)
for(;j<=n;j++,k++)
TR[k]=SR[j];
}
void MSort(RcdType *SR,RcdType *TR1,int s,int t)
//将SR[s..t]归并排序为TR1[s..t].
{
RcdType TR2[MAXSIZE];
int i;
int m;
if(s==t) TR1[s]=SR[s];
else
{
m=(s+t)/2;//将SR[s..t]平分为SR[s..m]和SR[m+1..t]
MSort(SR,TR2,s,m);//递归地将SR[s..m]归并为有序的TR2[s..m]
MSort(SR,TR2,m+1,t);//递归地将SR[m+1..t]归并为有序的TR2[m+1..t]
Merge(TR2,TR1,s,m,t);//将TR2[s..m]和TR2[m+1..t]归并到TR1[s..t]
for(i=s;i<=t;i++)
printf("%d ",TR1[i]);
printf("\n");
}

}
void MergeSort(Sqlist &L)
{
//对顺序表进行归并排序
printf("归并排序过程为:\n");
MSort(L.r,L.r,1,L.length);
printf("归并排序的结果为:\n");
}
void main()
{
int i;
Sqlist L,L1;
printf("输入学生记录个数:\n");
scanf("%d",&L.length);
printf("输入学生成绩:(格式为整数:a,b,c,d)\n");
for(i=1;i<=L.length;i++)
{
if(i!=L.length)
scanf("%d,",&L.r[i]);
else
scanf("%d",&L.r[i]);
}
for(i=1;i<=L.length;i++)
L1.r[i]=L.r[i];
L1.length=L.length;

printf("直接插入排序的结果:\n");
InsertSort(L);
for(i=1;i<=L.length;i++)
printf("%3d ",L.r[i]);
printf("\n");
printf("归并排序的结果为:\n");
MergeSort(L1);
for(i=1;i<=L1.length;i++)
printf("%3d ",L1.r[i]);
printf("\n");

}

测试结果
输入学生记录个数:
0
输入学生成绩:(格式为整数:a,b,c,d)
0,80,50,85,86,91,70,60,80,65
直接插入排序的结果:
50 60 65 70 80 80 85 86 90 91
归并排序的结果为:
归并排序过程为:
0 90
0 80 90
5 86
0 80 85 86 90
0 91
0 70 91
5 80
0 65 70 80 91
0 60 65 70 80 80 85 86 90 91
归并排序的结果为:
50 60 65 70 80 80 85 86 90 91
ress any key to continue
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问我的网络一天了找个部门到现在没有解决请问我上哪投诉? 计算机具备哪几种功能? 计算机有哪些功能是什么 歌词中有丑姑娘的歌曲 驾照不年审会怎样 没开过车驾照年审会通过吗 本来白色的背心放入洗衣机清洗后就变成有黑色斑点 其他一起洗的衣物... ...衣服颜色保持鲜艳(主要是白色衣服洗几次感觉就有点颜色不亮丽了... 为什么登陆lol会叫你解绑 小姨子告诉我说,炒菜时记住这4个小技巧,就是比别人做的好吃 能治好强直性脊柱炎吗或控制病情发展【强直性脊柱炎】 比较冒泡排序、插入排序、二分插入排序、选择排序、快速排序的运行时间。 数据结构顺序表上机操作,无序的输入表中数据,怎样实现显示的有序的数据(不用冒泡排序) 打印电子发票怎样缴税 用程序实现五种排序;用菜单进行选择。 怎样能把自己的从对方的微信里彻底删除? 怎样能把自己的从对方的微信里彻底删除 怎样能把自己的从对方的微信里彻底删除? 怎样可以彻底删除数据? 怎样能把自己的从对方的微信里彻底删除 怎样能把自己的从对方的微信里彻底删除 怎样能把自己的从对方的微信里彻底删除? 怎么永久删除 我是山东省的一名专科在校生,现在上大二,现在九月份了,还有两年就要毕业了。专升本是啥时候报名呢? 重庆未来几天的天气情况 请问什么人不能吃红菇? 为什么有的红菇是黑色的 红菇为什么那么值钱? 80后怎么样给父母买保险呢? 红菇能吃吗? 如何给父母买保险呢? 谁有快速排序的C语言实现啊 像我现在25了初中毕业,零基础去找个培训班去学 java android怎么样?会不... 华为手机锁屏时无法接消息,怎么办? 发糕怎么做才松软 就这么简单 神墓在那里可以看? 神墓全文阅读,神墓全文阅读 喝蜂蜜水胃痛的原因有哪些? 喝蜂蜜对水为什么会引起胃痛 产品名称前面可以加霸气吗 为什么喝了蜂蜜水会胃疼 一千到两千的商品看起来霸气有哪些 为什么我一喝蜂蜜泡水就胃痛? 为什么我喝了蜂蜜会胃痛! 给减肥产品取一个什么样的名字比较霸气 喝蜂蜜怎么会胃痛 现在做塑料瓶子行业怎么样?前景如何,需要注意什么? 请广大好友帮忙想个坐垫的名字吧,最好四字成语,霸气点的,这款是秋冬产品,谢谢 神墓全集阅读 求坏男人,,公子歌的文 玫瑰菜刀取合成霸气名字