冒泡排序

来源:互联网 发布:网上代理销售软件 编辑:程序博客网 时间:2024/06/08 08:47

冒泡排序是一种交换排序,它的关键思想是:两两相邻元素的比较。如果反序则交换,直到没有反序的元素。

最差时间复杂度 O(n^2)最优时间复杂度 O(n)平均时间复杂度 O(n^2)最差空间复杂度 O(n),辅助空间 O(1)
void swap(int& x,int& y){    if(x == y)        return ;    x ^= y;    y ^= x;    x ^= y;}void BubbleSort(int arr[],int n){    int i,j,flag = 1;//flag用作标记    for(i=0;i<n && flag;++i)    {        flag = 0;        for(j = n-1;j>=i;--j)        {            if(arr[j-1]>arr[j])//当元素有序后即不会进入循环,因此标志位仍为0,外层循环中止。            {                swap(arr[j-1],arr[j]);                flag = 1;            }        }    }}