数据结构C++实现-第一章 绪论

1.1 计算机与算法

1.1.3 起泡排序

void bubbleSort(int a[], int n)
{
    for(bool sorted=false; !sorted; --n) {
        sorted = true; // 每趟循环前都假定已经排序
        for(int i=1; i<n; ++i)
            if(a[i-1] > a[i]) { // 一旦相邻元素是逆序
                swap(a[i-1],a[i]);
                sorted = false; // 发现局部逆序,显然不是排序好的
            }
    }
}

1.3 复杂度分析

复杂度排名

1.3.1 常数O(1)

1.3.2 对数O( log(n) )

每执行一轮,n的大小都会成倍减小。对于对数的多次,即c循环里套的是对数循环,则 (O(log^c(n))) (c 为常数)
比如整数二进制展开中的位数1总数统计

int bitcount(unsigned int x)
{
    int n;
    for(n=0; x>0; x>>=1)
        n += (1&x);
    return n;    
}
原文地址:https://www.cnblogs.com/wjundong/p/11571195.html