一个循环实现冒泡法排序(并没有什么卵用)

来源:互联网 发布:属下知罪by枯目腐书 编辑:程序博客网 时间:2024/05/16 09:08

冒泡法时间复杂度为O(n^2)
这个是改不了的
不可能因为用一个循环实现,就变成了O(N)。。。
所以,并没有什么卵用,只是一种写代码的方式而已。。。

//Swap 用宏实现#define Swap(a,b,c) ((c)=(a),(a)=(b),(b)=(c))//第一种方式,,,最简单的void BubbleSortOneLoop(int ar[], int n){    int i = 0;    int l = 0;    while (i < n - 1)//i还是控制最外层    {               if (ar[l] > ar[l +1])        {            int temp = 0;            Swap(ar[l], ar[l + 1], temp);        }        l++;        if (l >=n - i-1)//只不过在特殊点的时候改变l和i        {            l = 0;             i++;        }    }   }//第二种void BubbleSortOneLoop2(int ar[], int n){    int i = 0;    int l = 0;    while (i<n*n-1)//大次数为n*n-1,%n实现下标循环    {        if (ar[l%n] > ar[l%n + 1] && l%n<n-1-(i/n))//直接判断        {            int temp = 0;            Swap(ar[l%n], ar[l%n + 1], temp);        }        l++; i++;    }}
1 0