如何在不使用字符串或数组的情况下按升序对整数进行排序?

klayveR:

我正在尝试按升序对任意长度的整数进行排序,而不使用字符串,数组或递归。

例:

Input: 451467
Output: 144567

我已经弄清楚了如何用模数除法获得整数的每个数字:

int number = 4214;

while (number > 0) {
    IO.println(number % 10);
    number = number / 10;
}

但是我不知道如何在没有数组的情况下排序数字。

不用担心IO上课;这是我们教授给我们的习俗课。

蒂莫菲:

实际上有一个非常简单的算法,它使用整数

int number = 4214173;
int sorted = 0;
int digits = 10;
int sortedDigits = 1;
boolean first = true;

while (number > 0) {
    int digit = number % 10;

    if (!first) {

        int tmp = sorted;
        int toDivide = 1;
        for (int i = 0; i < sortedDigits; i++) {
            int tmpDigit = tmp % 10;
            if (digit >= tmpDigit) {
                sorted = sorted/toDivide*toDivide*10 + digit*toDivide + sorted % toDivide;
                break;
            } else if (i == sortedDigits-1) {
                sorted = digit * digits + sorted;
            }
            tmp /= 10;
            toDivide *= 10;
        }
        digits *= 10;
        sortedDigits += 1;
    } else {
        sorted = digit;
    }

    first = false;
    number = number / 10;
}
System.out.println(sorted);

它会打印出来1123447这个想法很简单:

  1. 您将要排序的数字作为当前数字(我们称其为N)
  2. 您可以浏览已排序数字中的所有数字(我们称其为S)
  3. 如果S中的当前数字小于N中的当前数字,则只需将数字插入S中的当前位置。否则,只需转到S中的下一个数字。

该版本的算法可以按升序将两个asc排序,您只需要更改条件即可。

另外,我建议您看一下所谓的Radix Sort这里的解决方案从基数排序中吸取一些想法,我认为基数排序是该解决方案的一般情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在不使用字符串方法和不使用数组的情况下对整数进行排序

如何在不使用数组的情况下按升序对数字进行排序?

如何在不使用内置函数的情况下对字符串数组中的重复项进行排序和删除?

如何在不使用字符串的情况下删除整数的第n个十六进制数字?

在不使用字符串库功能的情况下对字符串进行排序和比较

C ++:如何在不使用算法库中排序功能的情况下按字母顺序对字符串向量进行排序

如何在不使用字符串的情况下将Python字典写入文件?

在不使用Array.sort的情况下对多维字符串数组进行排序

如何在不使用 Hashmap 的情况下对字符串中的字符重新排序?

在不使用内置 sort() 的情况下按字母顺序对字符串中的字母进行排序

如何在不使用数组的情况下删除字符串中的重复单词?

如何在不使用数组,split()或StringBuilder的情况下逐字逆转字符串

c# - 如何在不使用数组或拆分函数的情况下拆分字符串#

如何在不使用星号,循环,数组,导入的情况下重复字符串消息

如何在不使用 .join() 的情况下加入字符串数组?

如何在不使用多个括号的情况下使用字符串从对象内部获取嵌套值?

如何在不使用字典的情况下将字符串转换为python中的变量?

如何在没有任何排序功能的情况下按字母顺序对字符串数组进行排序?蟒蛇

不使用系统命名空间的情况下如何使用字符串

如何在C中按升序对字符串数组进行排序

如何在不使用reverse = True参数的情况下以相反顺序对字符串列表进行排序?

如何在不使用字符串方法的情况下在Python中去除空格?

如何在不使用字符串的情况下在Java中获得输入?

如何在不使用 OrderedDict 的情况下按字母顺序对嵌套字典进行键排序

如何在不使用对象的情况下连接字符串,整数和浮点数?

C ++:如何在不使用任何内置函数的情况下将字符串转换为整数

Java如何在不扩展比较器的情况下对包含句点/点的字符串数组进行排序?

如何在不使用正则表达式的情况下使用javascript搜索数组中的字符串

如何在不使用间接函数的情况下从字符串进行单元格引用[Excel]