当前位置: 首页 > 知识库问答 >
问题:

不使用数组对数字进行排序[封闭式]

邵宜年
2023-03-14

想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

我需要做的作业是把正数的数字从低到高排序。

我可以使用

  • 运营商
  • 整数/双精度/浮点数/字符
  • 中频/开关和环路

我不能用

  • char数组()
  • 字符串

共有3个答案

葛昱
2023-03-14

你为什么不尝试使用一棵树?

建造一棵有两个孩子的树:左边和右边。左孩子存储较低的数字,右孩子存储较高的数字。因此,您需要考虑一个节点有两种可能的选择。第一个数字是树的根。下一个数字可以存储在左侧或右侧。

一旦树满了,你就可以按顺序访问每个数字:1-左读;2-读取父级;3-正确阅读。

查看以下内容:http://en.wikipedia.org/wiki/Tree_traversal

赫连棋
2023-03-14

鉴于完全缺乏要求,不确定这会有所帮助,但是如果我在生产代码中执行此操作,我将使用列表和 LINQ OrderBy 方法

List<int> testList = new List<int> { 1, 5, 10, 4, 2 };
IEnumerable<int> orderedList = testList.OrderByDescending(x => x);

为了对数字进行排序,你必须非常清楚什么是“数组”。你需要一些收藏才能让它发挥作用。我将再次使用一个列表:

List<int> digits = new List<int>();
int remainingNumber = 52146729;
while (remainingNumber > 0)
{
   digits.Add(remainingNumber % 10);
   remainingNumber /= 10;
}

IEnumerable<int> orderedDigits = testList.OrderByDescending(x => x);

这是有效的,因为 x mod y 返回 x/y 的余数。所以 9 % 10 返回 9,19 % 10 也返回 9,依此类推。然后你除以 10 去掉一位数字,然后重复直到你用完为止。然后我使用与以前相同的订单函数。这种方法绝对不使用字符串或任何显式数组(List 是底层数组)。就像我说的,在没有任何收集的情况下完成这项工作将非常丑陋。

打印出该列表将很容易(如果您只需要打印输出):

foreach (int i in orderedDigits)
   Console.Write(i);

如果你需要一个实际的数字,那就有点难了,所以我现在就不说了。

贺君浩
2023-03-14

这样就行了!

int number = 52146729;
int sortedNumber = 0;
for (int i = 9; i >= 0; i--)
{
    int tmpNumber = number;
    while (tmpNumber > 0)
    {
        int digit = tmpNumber % 10;             
        if (digit == i)
        {
            sortedNumber *= 10;
            sortedNumber += digit;
        }
        tmpNumber /= 10;                
    }               
}
System.out.println(sortedNumber);

这是java btw。考虑到限制,这是相当有效的,O(n)。

 类似资料:
  • 对于这个项目,我得到了一个字符串数组和一个整数数组。int[1]是字符串[1]的排名。我需要使用mergesort按1到n的顺序对int数组进行排序,我在下面已经完成了这项工作。但是当int数组被移动时,我还需要切换字符串数组的位置,以便它们都被排序,如果这有意义的话?我不知道我的编码有什么问题,甚至我的想法是否真的有效,但我一直在stringSorted[k]=stringRight[j]上得到

  • 问题内容: 是否可以使用排序数组,然后再将另一个相关数组定位为与排序数组相同,例如: 从这一点出发,我想对数组进行排序,这样,如果“人”有一个cellNo“ x”,则在对数组进行排序后,他将具有相同的“ cellNo”“ x” 问题答案: 我会采用另一种方法: 创建一个新对象: 创建一个比较器: 打电话一对阵列

  • 问题内容: 为什么我的打印输出数组未在以下代码中排序? 问题答案: 您需要两个循环来实现Bubble Sort。 样例代码:

  • 我想按第三个和第一个元素对元组数组进行排序,因此我使用了以下代码: 我的问题是,在前面的例子中,我可以按第三个元素和第一个元素的升序排序,也可以按它们的降序排序(使用反向)。但是如何按第三个元素的升序和第一个元素的降序排序。 请在你的回答中考虑以下情况: 在这种情况下,我不知道内部数组的确切大小(取决于我读入该数组的文件模式),我想按侧中的所有项进行排序(一些升序和一些降序)。 编辑:看起来,我明

  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的