C++实现冒泡排序以及优化

本文介绍了冒泡排序的基本思想和流程,并提供了C++实现的代码示例,包括未优化和优化后的版本。优化主要通过设置标志位来避免已有序序列的多余比较,从而提高效率。冒泡排序在最好情况下时间复杂度为O(n),最坏情况下为O(n^2)
摘要由CSDN通过智能技术生成

冒泡排序(Bubble Sort)基本思想:
两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
冒泡排序的基本流程:
1.比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序的代码实现:

#include<iostream>
using namespace std;

void BubbleSort1(int arr[], int length);
void BubbleSort2(int arr[], int length);
void Swap(int arr[], int i, int j);
void ShowResult(int arr[], int length);

int main()
{
    int arr[] = { 9,2,3,3,9,7,5,1,9,2,10 };
    int length = sizeof(arr) / sizeof(int);
    ShowResult(arr, length);
    //BubbleSort1(arr, length);
    BubbleSort2(arr, length);
    ShowResult(arr, length);

    system("pause");
    return 0;
}

void BubbleSort1(int arr[], int length)
{
    if (arr == nullptr || length < 0 || length == 0)
        return;
    for (int i = 0; i < length; i++)
    {
        for (int j = 0; j < length - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
                Swap(a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值