gpt4 book ai didi

java - 如何按字母顺序对字符串的 ArrayList 进行插入排序

转载 作者:行者123 更新时间:2023-12-02 03:15:30 24 4
gpt4 key购买 nike

因此,在锦标赛类中,我有一个包含 (String Name, int handicap) 的 ArrayList

有一个方法alphabeticSort()可以按名字的字母顺序对玩家列表进行排序。我必须使用插入排序。

下面我尝试调整我知道的插入排序算法以使其工作,但是两行

players.add(j+1) 

给我一​​个错误,说“赋值的左侧必须是变量。”我明白这意味着什么,但我无法提出解决方案。

    public void alphabeticSort() {

for(int i = 1; i < players.size(); i++) {
String key = players.get(i).getName();
int j = i - 1;
while (j >= 0 && key.compareTo(players.get(i).getName()) < 0) {
players.add(j+1) = players.get(j);

j--;
}
players.add(j+1) = key;
}

我不知道如何解决这个问题。我是否走在正确的轨道上?请帮忙。任何帮助表示赞赏

编辑:我更改了

的第一个实例
players.add(j+1) = players.get(j);

players.set(j+1, players.get(j));

我是否对第二个实例(最后一行)执行相同的操作

我还发现该行

 while (j >= 0 && key.compareTo(players.get(i).getName()) < 0)

是错误的,因为在实际的插入排序中它应该是

 while(j >= 0 && arr[k]> backup)

但我不确定如何使用字符串来实现它,因为您不能在字符串上使用运算符。帮忙???

编辑2:

JUnit 测试应该测试它是否有效

public void testAlphabeticSort() {
int [] par = {3,4,5,4,5,3,4,3,5,3,4,5,4,3,4,5,4,3};
int [] scores1 = {3,4,3,5,3,4,4,3,5,3,3,4,3,4,3,4,3,4};
int [] scores2 = {4,4,3,5,3,4,4,3,5,3,3,4,3,4,3,4,3,4};
int [] scores3 = {3,4,3,5,3,4,4,3,5,3,3,4,3,4,3,4,3,5};
Tournament T = new Tournament(par);
T.enter("Scott", 1, scores3);
T.enter("Norman", 2, scores1);
T.enter("Palmer", 4, scores2);
T.alphabeticSort();
ArrayList<Player> sortedPlayers = T.getPlayers();
Player player1 = new Player("Norman", 2, scores1);
Player player2 = new Player("Palmer", 4, scores2);
Player player3 = new Player("Scott", 1, scores3);
assertTrue(sortedPlayers.get(0).equals(player1));
assertTrue(sortedPlayers.get(1).equals(player2));
assertTrue(sortedPlayers.get(2).equals(player3));
}

最佳答案

我认为您应该考虑以下几点List

  1. ArrayList<E> ,用于允许快速随机读取访问
  2. LinkedList<E>允许恒定时间插入或删除。

如果你的程序有很多插入和删除,那么你应该考虑使用 LinkedList而不是ArrayList .

另请参阅:When to use LinkedList over ArrayList?

<小时/>

您的代码中的问题位于 players.add(j+1) = players.get(j); 。您只能对变量使用赋值运算符,而不能对方法使用赋值运算符。

但是,如果您愿意设置j+1 List 的值players ,那么您可以使用set() LinkedList 都可用的方法和ArrayList .

players.set(j+1, players.get(j));

关于java - 如何按字母顺序对字符串的 ArrayList 进行插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40372121/

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