2020-01-17

冒泡排序与快速排序效率比较:

冒泡排序与快速排序在前面的博客中已经提到,如有需要见我前面的文章
[冒泡排序](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之后,快速排序就体现出了他的算法优越性。慢慢的冒泡排序呈现出了指数函数的增长速度,但是快速排序始终很平稳,排序速度也是很快的,这就是快速排序受欢迎的原因了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 稳住内在坚定的力量和感觉,放下一些焦躁。 今天醒来,看到两段话:“当我们不认可自己时,我们就开始评判别人; 当我们...
    悠爱阅读阅读 1,202评论 0 0
  • 1.我万分荣幸并深深感恩入睡即眠,不再睡前刷手机,太棒了,可以在闹钟前醒来,等待闹钟响起的瞬间特别喜悦,我又走在了...
    宇宙宠儿阅读 3,490评论 3 3
  • 接近年关,各种保险的电话也接连不断的打了过来,稍微说说我遇到的吧。 一种是办信用卡后,银行系的人员,他们一般会通过...
    14cat阅读 1,279评论 0 0
  • 最近每天早晨五点起床,看心流 这本书,樊登读书会有讲过这本书,能量班的同学也有推荐过。就买来看。他是积极心理学的奠...
    美丽selina阅读 3,759评论 0 7
  • 上一章 文/一叶苦艾 三房两厅的居室,很干净,洁白的地板一尘不染。客厅饭桌上已经摆好了酒菜,史勇、韩凌峰三人都在厨...
    一叶苦艾阅读 1,279评论 0 2

友情链接更多精彩内容