首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在一个数组索引中存储多个整数吗?

你能在一个数组索引中存储多个整数吗?
EN

Stack Overflow用户
提问于 2012-11-30 09:29:20
回答 5查看 17.9K关注 0票数 0

我正在尝试基数排序,我见过的一些算法有一个存储桶数组,它应该将多个整数保存到存储桶数组的一个索引中,下面是我引用的算法:

在一个索引中真的可以有多个整数吗?又是如何做到的呢?

或者有没有更简单的基数排序算法?

EN

回答 5

Stack Overflow用户

发布于 2012-11-30 09:33:13

是的,可以将多个int添加到一个数组中,但您需要有一个数组,其中每个项目都是一个Object而不是一个int

例如..。

代码语言:javascript
复制
// the items to store in the array, which contain 3 ints
public class Bucket {
    int number1 = -1;
    int number2 = -1;
    int number3 = -1;

    public void addInt(int number){
        if (number1 == -1){
            number1 = number;
        }
        else if (number2 == -1){
            number2 = number;
        }
        else if (number3 == -1){
            number3 = number;
        }
    }
}

// the array, as used in other classes
Bucket[] bArray = new Bucket[6]; // 6 items in the array, where each item is a Bucket that contains 3 ints

// assigning ints into the array
bArray[2].addInt(56); // add the int '56' to the bucket at index '2' of the array

// You could also use other Array-like structures
ArrayList<Bucket> bList = new ArrayList<Bucket>();

当然,如果存储桶中并不总是有<=3项,那么只需将bucket类更改为使用数组或List作为其变量,而不是使用单独的int

你也可以使用多维数组...

代码语言:javascript
复制
// creating the buckets
int[][] buckets = new int[6][3];

// assigning ints into the array
bArray[2][0] = 56; // add the int '56' to the bucket at index '2' of the array, position '0'

然而,如果你开始玩不同大小的桶,它会变得有点混乱,并且你需要做更多的错误检查来确保……

  1. 当您尝试访问存储桶中的项目时,它们不为空。
  2. 当您向存储桶添加数字时,您需要检测第二个维度中下一个为空的位置,这样您就不会覆盖已在其中的int

正是由于这些原因,我建议使用基于对象的数组而不是多维数组。

票数 0
EN

Stack Overflow用户

发布于 2012-11-30 09:34:23

两个案例创建存储桶

  • 数字不是唯一的
  • 基数对每个数字位置进行排序(小数形式为一、十、百),然后再进行下一位排序-因此,如果按第一个数字排序将匹配,则为003和019。

第一种情况实际上只是第二种情况的退化。

请注意,根据您对数字进行排序的顺序,有两种基数排序变体。

我也回答了这个问题的数据结构部分--不,你不能也不会在每个索引上存储多个值。相反,每个存储桶通常表示为数组的子序列。然后,每个存储桶由其开始的偏移量表示(结束可以是隐式的)。

票数 0
EN

Stack Overflow用户

发布于 2012-11-30 09:43:52

bucket本身就是一个int[] (或List或任何可以存储多个项的东西)。

你不能在一个索引中放入一个以上的东西。

代码语言:javascript
复制
int[] array = new array[6];
int value = array[5];

如果存在多个int,则不再起作用。

最简单的方法可能是使用int[][]数组。现在,左边框中的每个索引都指向一个完整的数组。这些数组的长度也可以不同:

Java Jagged Array

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13637706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档