冒泡排序

  • 冒泡排序
  • 时间复杂度O(N^2)
  • n个元素需要进行n-1趟排序,每趟平均n/2次
  • 基本原理:每次比较相邻的两个元素,如果这两个元素的顺序(从大到小的顺序,或从小到大)不对,则交换它们。
  • 例:1、3、2,从小到大排序,需要进行2趟冒泡排序。
    1. 第一趟1、3比较,符合顺序。3、2,比较,不符合顺序。交换之。结果为:1、2、3,此时3的位置为最终结果,3不参与下次排序。
    2. 第二趟,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();
    }

    /* For Linux 返回CPU时钟计时单元数
     * 1000000 = 1秒,不同版本系统可能不同
     * 具体查看time.h中,宏CLOCKS_PER_SEC的定义
     */ 
    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时钟计时单元。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值