冒泡排序与快速排序效率比较:
冒泡排序与快速排序在前面的博客中已经提到,如有需要见我前面的文章
[冒泡排序](https://www.jianshu.com/p/ccfb6604ed6b
)
[快速排序](https://www.jianshu.com/p/9bca30819bde
)
这里面说明了算法的原理以及基本操作。
那么今天在这里我直接引用代码来说明两个算法的效率对比。
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<time.h>
#include<stdlib.h>
#define number 100000
#define range 100000
using namespace std;
int bubble_sort(int arr[]);
int quick_sort(int arr[], int low, int high);
int i = 0;
int main() {
clock_t start, finish;
double totaltime;
int a[number];
srand(time(0));//设置种子
for (i = 0; i < number; i++)
a[i] = rand() % range+ 1;//产生range范围内的随机数
int n;
cin >> n;
if (n == 1) {
start = clock();//程序开始的时间
bubble_sort(a);
finish = clock();//程序完成的时间
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "\n此程序的运行时间为" << totaltime << "秒!" <<endl;
}
else if (n == 2) {
start = clock();//程序开始的时间
quick_sort(a, 0, number - 1);
finish = clock();//程序完成的时间
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "\n此程序的运行时间为" << totaltime << "秒!" << endl;
}
else {
cout << "ERROR" << endl;
}
return 0;
}
int bubble_sort(int a[]) {
int j;
for (i = 0; i < number; i++)
for (j = number; j > i; j--)
if (a[j - 1] > a[j]) {
int temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
return 0;
}
int quick_sort(int a[], int low, int high) {
if (low<high)
{
int i = low, j = high;
int x = a[low];//把序列的第一个数设置为基准数
while (i < j)
{
while (i < j && a[j] >= x)
j--;
if (i < j)
a[i++] = a[j];
while (i < j && a[i] <= x)
i++;
if (i < j)
a[j--] = a[i];
a[i] = x;
}
quick_sort(a, low, i - 1);//对左子序列进行递归
quick_sort(a, i + 1, high);//对右子序列进行递归
}
return 0;
}
这个代码是产生十万个十万以内的随机数,然后进行排序,如果输入‘1’,那么就进行冒泡排序,然后输出这个算法所用的时间。如果输入‘2’那么就会进行快速排序,并且输出他所用的时间。
下面我们来看一下程序的运行结果:
我们首先输入‘1’进行冒泡排序,看看冒泡排序用多少时间

image.png
然后我们来输入‘2’进行快速排序,看看快速排序所用的时间

image.png
如果我们把number的值改为50000我们来看一下
输入‘1’的时候进行冒泡排序所用的时间

image.png
输入‘2’的时候进行快速排序所用的时间

image.png
我们继续把number的值改为10000,5000,1000
生成以下统计图

image.png
接下来我们生成一个折线图,更清晰的表达这两个算法的效率对比

image.png
在这里我们可以清楚地看到,数值为10000之前两个算法的效率几乎没有差距,但是10000之后,快速排序就体现出了他的算法优越性。慢慢的冒泡排序呈现出了指数函数的增长速度,但是快速排序始终很平稳,排序速度也是很快的,这就是快速排序受欢迎的原因了。