栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号