gpt4 book ai didi

java - 使用插入排序和选择排序对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-30 07:01:37 25 4
gpt4 key购买 nike

我需要创建一个方法来对对象数组进行排序。我从来没有这样做过,但我必须为我的类(class)修改它。当谈到实现排序方法时,我完全迷失了。我需要使用插入排序和选择排序进行排序。

这是我到目前为止的代码。我所要做的就是在用户希望时调用 sort() 。

package citylisttest;

public class CityList {
private City[] city;
private Integer numberOfCities;

public CityList (Integer cityListSize){
this.city=new City[cityListSize];
this.numberOfCities=0;
}

public void addCity(String city){
this.city[this.numberOfCities]=new City(city);
this.numberOfCities++;
}

public String toString(){
String cityDetails=new String();
if (this.numberOfCities!=0){
cityDetails+=String.format("%-15s\n","CITY");
for(Integer i=0;i<this.numberOfCities;i++) {
cityDetails+=this.city[i]+"\n"; }
}
else
cityDetails+="City list is empty";
return cityDetails;
}

public void sort(){

}
}

最佳答案

首先,我建议将变量 city 重命名为 cities,因为它是一个数组,并且包含多个城市。此外,还可以考虑通过将实例变量标记为私有(private)并分别创建 getter 和 setter 来封装数据。

假设您想按城市数量升序对它们进行排序,那么您的排序方法应该具有:

for (int i = 0; i < city.length - 1; i++) {
for (int j = i + 1; j < city.length; j++) {
if (city[i].getNumberOfCities() > city[j].getNumberOfCities()) {
City temp_city = city[i];
city[i] = city[j];
city[j] = temp_city;
}
}
}

我希望这会有所帮助,但您可以实现 Comparable 接口(interface)或按照 this tutorial 创建一个 Comparator 类.

编辑:如果您想使用compareto,按升序对城市名称进行排序:

for (int i = 0; i < city.length - 1; i++) {
for (int j = i + 1; j < city.length; j++) {
if (city[i].getName().compareTo(city[j].getName()) > 1) {
City temp_city = city[i];
city[i] = city[j];
city[j] = temp_city;
}
}
}

假设 x 和 y 是字符串,x.compareTo(y) 给出:

如果 x > y,则为正数

如果 x 等于 y,则为零

如果 x 则为负数

关于java - 使用插入排序和选择排序对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com