排序-冒泡排序

    冒泡排序基于比较的的简单排序算法。它的基本原理:通过相邻元素的两两比较,如果第一个元素比第二个元素大,则交换它们,排序这样将最大(最小)元素放到无序数据的末尾,若无数据交换,则实现数据全部有序。

算法描述:

  • 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
  • 针对所有的元素重复以上的步骤,除了最后一个;
  • 重复步骤1~3,直到排序完成。

算法的时间复杂度:

    冒泡排序与初始数据的有序性相关。该算法的平均时间复杂度为O(n^2),最坏时间复杂度O(n^2),最好时间复杂度O(n);

代码实现:

#include <iostream>
using namespace std;


inline void swap(int *a, int *b){
    int temp = *a; *a = *b; *b = temp;
}

inline void print(int arr[], int len)
{
    for(int i = 0; i != len; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;

}

void bubbleSort(int arr[], int len)
{

    for(int i = 0; i != len; i++){

        cout << "第" << i << "趟:" << endl;
        bool isSwap = false;

        for(int j = 0; j != len -1 - i; j++){



            if(arr[j] > arr[j+1]){            
                swap(arr[j], arr[j+1]);
                isSwap = true;
            }

        }
        print(arr, len);

        if(!isSwap)
            break;
    }
}


int main()
{
    int arr[10] = { 1,2,3,4,7,8,5,9,10,14 };
    cout << "原始数据:" << endl;
    print(arr, 10);
    bubbleSort(arr, 10);

}

运行结果:

原始数据:
1 2 3 4 7 8 5 9 10 14
第0趟:
1 2 3 4 7 5 8 9 10 14
第1趟:
1 2 3 4 5 7 8 9 10 14
第2趟:
1 2 3 4 5 7 8 9 10 14



猜你喜欢

转载自blog.csdn.net/snailcpp/article/details/79981452
今日推荐