Bubble Sort

来源:互联网 发布:海洛因戒断反应 知乎 编辑:程序博客网 时间:2024/06/06 15:05

Bubble Sort

最坏情况 O(n^2)
最好情况 O(n)
平均情况 O(n^2)
最坏情况空间复杂度 O(1)

void BubbleSort(int array[],int n){    for(int i = 0;i<n-1;i++)//只需循环n-1次    {        for(int j = 0;j<n-1-i;j++)            //在第一遍循环时,最后一位元素已是最大            //所以在之后的循环无需重复最后一位元素        {            if(array[j]>array[j+1])             //从小到大排列,若array[j]<array[j+1]则从大到小排列            {int t = array[j];array[j]=array[j+1];array[j+1]=t;}            //互换元素        }    } }

假设数据在第X次时无交换数据(表明已排列完成),则可以退出循环,提高效率
具体操作如下

void BubbleSort(int array[],int n){    bool flag = 1;//设置一个标志,1代表有数据交换,0代表没有    for(int i = 0;i<n-1 && flag;i++)//当无数据交换时退出外循环    {        flag = 0;        for(int j = 0;j<n-1-j;j++)        {            if(array[j]>array[j+1])             {                int t = array[j];array[j]=array[j+1];array[j+1]=t;                flag = 1;//有交换,flag = 1;            }        }    } }
原创粉丝点击