- 冒泡排序
- 时间复杂度O(N^2)
- n个元素需要进行n-1趟排序,每趟平均n/2次
- 基本原理:每次比较相邻的两个元素,如果这两个元素的顺序(从大到小的顺序,或从小到大)不对,则交换它们。
- 例:1、3、2,从小到大排序,需要进行2趟冒泡排序。
- 第一趟1、3比较,符合顺序。3、2,比较,不符合顺序。交换之。结果为:1、2、3,此时3的位置为最终结果,3不参与下次排序。
- 第二趟,1、2比较,符合顺序。所有元素,排序完成,结果为1、2、3
- 代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
int main()
{
int s[10000], temp;
int i = 0;
int j = 0;
int count = 0;
std::cin >> count;
for (i = 0; i < count; i++) {
s[i] = rand();
}
clock_t start = clock();
for (i = 1; i <= count - 1; i++) {
for (j = 0; j <= count - i - 1; j++) {
if (s[j] < s[j+1]) {
temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
clock_t end = clock();
for (i = 0; i < count; i++) {
std::cout << s[i] << std::endl;;
}
std::cout << "time: " << end - start << std::endl;
return 0;
}
- 冒泡排序的时间复杂度O(N^2),运行程序,输入5000,对5000个随机数进行排序。大体的耗时为:70000+个CPU时钟计时单元。