数据结构与算法分析——C语⾔描述P1.1 选择问题,选择出第K⼤的数,并画出N为不同值的运⾏时间,K=N/2
毕业两年半,重写排序,感觉良好。代码使⽤冒泡排序,库函数clock计算⼤致运⾏时间。
1// P1_1.cpp : Defines the entry point for the console application.
2//
3
4 #include "stdafx.h"
5 #include <malloc.h>
6 #include <stdlib.h>
7 #include <time.h>
8
9void swap(int& a,int& b);
10
11int main(int argc, char* argv[])
12 {
13
14int N = 40000;
15int k = N/2;
16int i,j;
17
18//动态数组
19int *dynArr = (int *)malloc(N * sizeof(int));
20//⽣成随机数组
js获取当前时间yyyymmddhhmmss师生纯爱的小说
21 srand((unsigned) time(NULL));
22//printf("%d%c", rand(),'\t');
android studio书籍23for(i=0; i<N;i++)
24 {
25 dynArr[i] = rand()%100;
26//printf("%d%c",dynArr[i],'\t');
27 }
28
css3的3d效果怎么做29
30int beginTime = clock();//计时开始
31
32//冒泡排序
33int temp = 0;
34for(i=0;i<N;i++)
35for(j=0;j<N;j++)
36 {
37if(dynArr[i]>dynArr[j]){ //左>右,交换
38 swap(dynArr[i],dynArr[j]);
39 }
40 }//第⼀层结束,最⼤数在最右
41
42int endTime = clock();//计时结束
43int runningTime = endTime - beginTime;//算出来的单位是毫秒
44
45
46
47for(i=0; i<N;i++){
48// dynArr[i] = rand()%100;
49//printf("%d%c",dynArr[i],'\t');
50 }
51
52char str1[] = "个数中第k⼤的数:";
53char str2[] = "运⾏时间(毫秒):";
54 printf("\n%d%s%d\t",N,str1,dynArr[k]);
冒泡排序代码c语言55 printf("\n%s%d\n",str2,runningTime);
56
时间正则表达式57
58return0;
59 }
60
61void swap(int& left,int& right){
62int temp;
63 temp = left;
64 left = right;
65 right = temp;
66 }
更改N值,来测试不同样本值的运⾏时间。
假如数据是学⽣的⼀个科⽬的考试成绩,百分制。N表⽰学⽣的个数。
N Time(ms)
0 0
50 1
100 5
500 49
1000 101
5000 272
N(万) Time(ms)
1 281
2 1109
3 2506
4 4384
5 6764
6 9747
7 13296
8 17421
9 22078
10 27307
⽤绘制曲线图:
感觉就是个递增。其实这是假象...再看这两个⼩图:
⼈数是普通的递增,但是时间可不是递增,时间花费是迅速上升的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论