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

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

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

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

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
,这里的解决方案从基数排序中获取一些想法,我认为基数排序是该解决方案的一般情况。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存