随机生成100个数,利用几种排序算法对其实现排序(C++)
C++中几种排序算法的实现其实问题很简单:随机生成100个数,编写以下4种排序算法对其从小到大排序。冒泡排序快速排序希尔排序堆排序归并排序以下内容主要包括算法实现。补充内容概念内容:#include:主要功能是处理输入输出流。
(具体参考:https://baike.baidu.com/item/iostream/2850567?fr=aladdin)
#include:集成了一些常用的函数。
(具体参考:http://blog.csdn.net/xiao229404041/article/details/6721192)
#include:把日期和时间转换为字符串。(具体参考:http://blog.csdn.net/l773575310/article/details/53258230)namespace:与作用域相关,主要用于命名空间。(具体参考:http://blog.csdn.net/yao_zhuang/article/details/1853625)冒泡排序算法理解:(具体参考:https://www.cnblogs.com/kkun/archive/2011/11/23/2260280.html)代码实现:#include#include#includeusingnamespacestd;//Swap-交换templatevoidSwap(T&a,T&b){Ttmp=a;a=b;b=tmp;}//BubbleSortingSmall->LargetemplatevoidBubbleSorting(TA[]){for(inti=99;i>0;i--)//Times-外循环,n-1次{intflag=0;//引入flag,稍作性能提升for(intj=0;jA[j+1]){Swap(A[j],A[j+1]);flag=1;}}if(!flag)break;}}intmain(){clock_tstart_time=clock();srand(unsigned(time(NULL)));constintmin=-100;constintmax=100;intA[200];for(inti=0;ic语言数据结构产生随机数并排序,数据结构产生随机数并排序doc
数
据
结
构
课
程
设
计
学部:信息科学与技术学部
专业:计算机科学与技术
目录
一、1
二、实验目的和要求1
三、实验内容和原理1
四、实验环境1
五、自定义函数2
1.生成随机数的函数2
2.快速排序函数2
3.堆排序函数3
4.显示函数3
5.主函数4
六、运行截图4
七、代码清单5
实验题目
排序综合利用随机函数产生N个随机整数,对这些数方法排序排序排序。
C++6.0
五、自定义函数
1.生成随机数的函数
/*--------------------产生随机数-------------------*/
voidcreat(sqlist*l)
{
inti;
printf("请输入要产生的随机数个数:");
scanf("%d",&l->length);
srand((unsigned)time(NULL));//给srand()提供一个种子,它是一个unsignedint类型,
for(i=1;ilength;i++)
{
l->r[i].key=rand()%900+100;//调用rand(),返回一个随机数(在0到32767之间)
printf("%d",l->r[i].key);
}
printf(" ");
}
2.快速排序函数
/*交换顺序表中子表r[low...high]的记录,使枢轴记录到位,并返回其所在的位置*/
intpartion(sqlist*l,intlow,inthigh)
{intpivotkey;
l->r[0]=l->r[low];//用子表的第一个记录作枢轴记录
pivotkey=l->r[low].key;//枢轴记录关键字
while(low
{while(lowr[high].key>=pivotkey)--high;
l->r[low]=l->r[high];//将比枢轴记录小的记录移到低端
while(lowr[low].keyr[high]=l->r[low];//将比枢轴记录大的记录移到低端
}
l->r[low]=l->r[0];//枢轴记录到位
returnlow;//返回枢轴位置
}
/*--------------快速排序------------------*/
voidQsort(sqlist*l,intlow,inthigh)
{intpivotloc;
if(low
{pivotloc=partion(l,low,high);//将l.r[low..high]一分为二
Qsort(l,low,pivotloc-1);//对低子表递归排序
Qsort(l,pivotloc+1,high);//对高子表递归排序
}
}
3.堆排序函数
/*调整h->r[s]的关键字,使h->r[s]成为一个大顶堆*/
voidheapadjust(sqlist*h,ints,intm)
{keytyperc;
intj;
rc=h->r[s];
for(j=2*s;j=h->r[j].key)break;
h->r[s]=h->r[j];
s=j;
}
h->r[s]=rc;
}
/*对顺序表h进行堆排序*/
voidheapsort(sqlist*h)
{keytyperc;inti;
for(i=h->length/2;i>0;--i)
heapadjust(h,i,h->length);
for(i=h->length;i>1;--i)
{rc=h->r[1];
h->r[1]=h->r[i];
h->r[i]=rc;
heapadjust(h,1,i-1);