gpt4 book ai didi

java - 对双数组列表进行插入排序,第一项未排序

转载 作者:行者123 更新时间:2023-12-01 13:40:14 26 4
gpt4 key购买 nike

排序类中arraylist插入排序:

public void insertionSort(ArrayList <Double>list){
double temp;
int previousIndex;

for(int index = 1; index < list.size(); index++){
temp = list.get(index);
previousIndex = index - 1;
while((list.get(previousIndex) > temp) && (previousIndex > 0)){
list.set((previousIndex+1), list.get(previousIndex));
previousIndex-=1;
}
if(list.get(previousIndex) > temp){
list.set((previousIndex+1), list.get(previousIndex));
list.set((previousIndex+1), temp);
}else{
list.set((previousIndex+1), temp);
}
}
}

主类:

package sorts;

import java.util.*;

public class TestSorts {


public static void displayArrayList(ArrayList <Double> list){
for (int i=0; i<list.size();i++){
System.out.print(list.get(i)+" \n");
}
System.out.println("\n");
}

public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int numItems,searchNum,location;
Sorts sort=new Sorts();

Scanner in=new Scanner(System.in);
int numItems,searchNum,location;
Sorts sort=new Sorts();
System.out.print("Enter the number of elements: ");
numItems=in.nextInt();

ArrayList <Double> list=new ArrayList<>();


for (int i=0;i<numItems;i++){
list.add((int)100*Math.random());
}


System.out.println("Unsorted: ");
displayArrayList(list);
sort.insertionSort(list);
System.out.println("Sorted: ");
displayArrayList(list);

}
}

基本上现在发生的情况是,数字将生成良好,并且排序良好,但排序时除外,排序列表中的第一项将不正确。如:

未排序:

58.754608713273925 

77.15776272269233

61.752499151303795

1.9942069463339207

55.30460705281677

78.06371704304172

排序:

58.754608713273925

1.9942069463339207

55.30460705281677

61.752499151303795

77.15776272269233

78.06371704304172

所以看起来一切都排序良好,但列表中的第一个随机数从未被排序,并且最终停留在与之前完全相同的位置。

最佳答案

在排序例程中,

index = 1 应为 index = 0。目前,您正在跳过列表中的第一项,该项目存储在索引零处。

关于java - 对双数组列表进行插入排序,第一项未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875546/

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