java - 另一个数组中元素的 Java 桶排序
问题描述
我最近才开始学习 java,今天我学会了如何进行所谓的选择排序。在过去的 3 个小时里,我一直在尝试进行桶排序,但有些部分我不知道如何编码。重要提示:我正在通过一本书完全自学java。我不是学生,我这样做是一种爱好。我已经用谷歌搜索了我能想到的所有内容,但没有找到解决方案。我没有老师或任何我可以问的人,所以是的,任何帮助将不胜感激!
代码:
private int[] bucketSort() {
int[]bucket=new int[maxSize+1];
int[]sortedElements = new int[elementaros.length];
for(int i=0; i<elementaros.length;i++) {
bucket[elementaros[i]]++; //it says that I can't convert from Car to int. How can I add the elements of array elemenators to bucket?
}
int outPos = 0;
for (int j = 0; j < bucket.length; j++){
for (int k = 0; k < bucket[i]; k++){
sortedElements[outPos++] = i;
}
}
return bucket;
}
代码的想法:
我有一个类型的数组元素Car
(Car
是我程序的另一类)。它看起来像这样 - Car[] elementaros
。显示可管理对象int maxSize
的最大数量。Car
我想要做的是以下 - 我想elementaros
按字母顺序对数组中的元素进行排序。如果有人有时间向我展示这将如何使用示例代码运行,或者只是给我一些提示,我将非常感激。正如我所说 - 我没有人可以问。
解决方案
选择排序是搜索和排序的组合。
原理很简单,但我总是更喜欢图表而不是巨大的解释。
unsorted
在数组的开头开始一个指针。然后,对于数组的每个值,在您的数组中搜索最小值(或搜索按字母顺序排列的汽车)并Car
用指针切换创建的位置(这也是一个Car
)
然后您可以将指针前进到数组的下一个元素。
这是执行此操作的基本实现
public static Car[] doSelectionSort(Car[] elementaros) {
for (int i = 0; i < elementaros.length - 1; i++) {
int index = i;
for (int j = i + 1; j < elementaros.length; j++) {
if (elementaros[j].getName().compareTo(elementaros[index].getName()) < 0) {
index = j;
}
}
Car nextOrderedCar = elementaros[index];
elementaros[index] = elementaros[i];
elementaros[i] = nextOrderedCar;
}
return elementaros;
}
举例来说,我想您的类型对象Car
有一个我们可以用于比较的名称。
更新 1:
我读得太快了你最初的问题,这让我回答了一个完全不同的排序算法。我的错。
我在这里找到了一个可以解决问题的实现:
希望这可以帮助。
推荐阅读
- excel - VBA:复制一行,将其插入到上面并更改一个单元格的值
- amazon-web-services - AWS Gateway API,将 lambda 设置为代理
- python-3.x - 在字符串中有 ( ) 如何 re.sub 到 \( \)
- python - 尝试将 requests.get 对象转换为 json 并收到错误
- richfaces - 日历 RichFaces 3.3.1 JSF 1.2 BUG Chrome
- python - 使用字典加入与映射以将新数据添加到 Pandas/PySpark 数据框?
- docker - 气流 docker swarm 中节点工作人员的不需要的热关机(MainProcess)
- c++ - 如何使用 C++ 实现本机脚本
- javascript - 如何使用 jquery 使用 select2 制作下拉树?
- android - 是否可以使用 React Native 控制振动强度?