- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排序的需求分析
一 需求分析输入的形式和输入值的范围;
输出的形式;
①.将一个无序数组进行排序
随机生成N个随机整数,对这些数进行多种方法进行排序。分别采用以下方法实现上述问题求解(可采用的方法有插入排序、希尔排序、起
泡排序、快速排序、选择排序、堆排序、归并排序)
②.通过移动次数来判断排序方法适合哪种类型的数组。
二 概要设计 各模块之间的调用关系以及算法设计
程序流程图如下
三 详细设计
{
srand(time(0));
printf(请输入数组的长度:);
scanf(%d,length);
1=i
If i=length
Then i++
{
r[i]=rand()%100;
R[i]=r[i];
printf(\0);
}
}
直接插入程序模块:
begin
input r[] and length
2=i
while i=length
{
r[i]=r[0]
i-1=j
while r[0]r[j]
{
r[j]=r[j+I]
j-1=j
}
r[0]=r[j+1]
j++
}
end
希尔排序程序模块:
begin
input r[] and length and delta
while i=length
{
if r[i]r[i-delta]
r[i]=r[0]
i-delta=j
while j0 and r[0]r[j]
{
r[j]=r[j+delta]
r[0]=r[j+delta]
j-delta=j
}
end if
}
end
冒泡排序程序模块:
begin
input r[] and length
length=i
while i1
{
1=lastchange
1=j
while ji
{
if r[j+1]r[j]
r[j+1]=temp
r[j]=r[j+1]
temp=r[j]
j=lastchange
end if
j++
}
lastchange=i
}
End
快速排序程序模块:
begin
input r[] and low and high
while lowhigh
{
while lowhigh and r[high]=pivotkey
{
high--
r[low]=temp
r[high]=r[row]
temp=r[high]
}
while lowhigh and r[low]=pivotkey
{
low++
r[low]=temp
r[high]=r[low]
temp=r[high]
}
}
return low
{
if(lowhigh) // 长度大于1
{
Partition(c,low,high) =pivotloc;
调用QSort (c,low,high)
}
}
{
调用 Qsort (c,1,length);
Output(c);
Output 此次排序移动次数为%d次\n,yd4);
}
End
选择排序算法模块:
begin
input r[] and length
length=n
1=i
while i=n
{
i=k
i+1=j
while j=n
{
if r[j]r[k]
j=k
if k!=i
{
r[i]=x
r[k]=r[i]
文档评论(0)