【c/c++算法】生成100000(10w)个随机数,进行双向冒泡排序+‘哨兵‘边界,放到数组中,并测试执行时间
【摘要】 【c/c++算法】生成100000(10w)个随机数,进行双向冒泡排序+‘哨兵‘边界,放到数组中,并测试执行时间(冒泡中的王牌泡)
【c/c++算法】生成100000(10w)个随机数,进行双向冒泡排序+‘哨兵‘边界,放到数组中,并测试执行时间(冒泡中的王牌泡)
题目来源:
《数据结构案例教程(C/C++)》第一章实践
我用的进阶版双向冒泡来做的
双向冒泡排序+'哨兵'边界
下面块引用中为我用c/c++写的
因为已经给定了100000,所以就随随便便写了一下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//生成100000个随机数,进行双向冒泡排序+'哨兵'边界,放到数组中,并测试执行时间。
void BubbleSort(int r[100000], int n) //定义局部变量(我在全局变量里面定义过)
{int i,j,temp1,temp2; //设置分别i,j为前后冒泡的临界点
int sentryI=0,sentryJ=100000-1; //将0和r长度赋值给起始值i,jwhile(sentryI < sentryJ) //判断中间的冒泡区间是否排完
{
for (i=sentryI;i<sentryJ;i++) //从前往后排
{
if (r[i]>r[i+1]) //交换值
{
temp1=r[i];
r[i]=r[i+1];
r[i+1]=temp1;
}
}
sentryI++; //前界点后移for (j=sentryJ;i>sentryI;i--) //从后往前排
{
if (r[j]<r[j-1]) //交换值
{
temp2=r[j];
r[j]=r[j-1];
r[j-1]=temp2;
}
}
sentryJ--; //后界点前移
}}
int main()
{int r[100000],n=100000; //定义全局变量
srand((unsigned int)time(0)); //初始化随机种子
for(int b=0;b<100000;b++); //生成随机数
{
r[b]=rand() %100000;
}
clock_t StartTime,EndTime; //定义计时开始和计时结束变量
double time;
StartTime=clock(); //开始计时
BubbleSort(r,n); //排序
EndTime=clock(); //结束计时
time=(double)(EndTime-StartTime)/CLOCKS_PER_SEC; //计算差值并转换为秒
printf("执行时间为:%f秒\n",time);
return 0;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)