程序猿阵线联盟-汇总各类技术干货

实现一个排序算法时间复杂度为O(n)

2017-11-06  本文已影响0人  沧州宁少

实现一个排序算法,要求时间效率为O(n)

我们遇到这个问题的思路。

废话不多说了,直接上代码。有错希望给指正~ 。

void SortAges(int ages[],int length){
//边界条件控制
if (ages == nullptr||length<=0) {
    return;
}

const int oldestAge = 99 ;
//记录每个年龄出现的次数
int timesOfAge[oldestAge+1];
//初始化数组
for (int i=0 ; i<=oldestAge; i++) {
    timesOfAge[i] = 0;
}
for (int i= 0; i<length; i++) {
    int age =  ages[i];
    if (age<0 || age>oldestAge) {
        return;
    }
    // 这个年龄出现的次数+1
    ++timesOfAge[age];
}
int index = 0;

for (int i =0 ; i<oldestAge; i++) {
    // 遍历次数的数组。根据年龄。
    for (int j =0 ; j<timesOfAge[i]; j++) {
        ages[index] = i ;
        ++ index;
    }
}
}
上一篇 下一篇

猜你喜欢

热点阅读