【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;
}
- 点赞
- 收藏
- 关注作者
评论(0)