c - 用 C 获得整数中最正确数字的最佳方法是什么?

标签 c big-o

作为一名学习者,我只是在研究 C,并写了这个小 function ...

char *getPlaceSuffix(int number) {

    static char *suffixes[] = {"st", "nd", "rd", "th"};

    if (number >= 11 && number <= 13) {
        return suffixes[3];
    } else {
        while (number > 10) {
            number -= 10;   
        }

        if (number >= 1 && number <= 3) {
            return suffixes[number - 1];
        } else {
            return suffixes[3];
        }               
    }
}   

我在推特上发布了链接,Konrad Rudolph告诉我我获得最小有效数字的方法是 O(n) 并且效率不高。

Unfortunately, it’s O(n) for very large number – to make it O(logn), adjust the while loop for higher powers of 10 …

Source

我不太熟悉大 O 表示法,但我明白 O(n) 效率不是很高的要点?

正如您从我的代码示例中看到的那样,我减去 10 直到数字长度为一位数,因此我可以比较它以查看哪个后缀合适。我快速玩了一下除法和模数,但没弄明白。

那么,我的问题是,获取数字中最低有效数字的最佳方法是什么?

我还在学习,所以请放轻松:)

谢谢!

最佳答案

number % 10

应该可以。

关于c - 用 C 获得整数中最正确数字的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988373/

相关文章:

c - 逼近常数 e 的简单 C 程序

c++ - 确定文件 HANDLE 是否为管道句柄

创建一个链表来注册 C 学生

java - 使用步数计算算法的复杂性

c++ - 递归函数是否具有 O(N) 的最小空间复杂度?

algorithm - 使用模的 while 循环的时间复杂度

c - 函数无法正确添加二维数组的元素?

c++ - 我无法理解这段代码

c - 在 O(n) 运行时间内对数组元素求平方

c++ - std::next_permutation 的摊销复杂度?