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

标签 java sorting arraylist

排序类中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/

相关文章:

java - 如何在输入中添加 java 图标和阵容文本?

sorting - 如何在Elasticsearch6.8中根据字符串顺序对文档进行排序

java - 如何向 String 数据类型的 ArrayList 添加数据

java - 需要帮助按字母顺序对文本文件进行排序

java - 定时器编译问题

java - 当我更改 libGDX 中的分辨率时如何保持平铺 map 的外观

sql - 重叠期 - 合并成一个连续的时间序列

mysql - 按 "position"排序,但最后放置 0

java - 动态指定返回数组列表的对象类型

java - 是否可以将 JavaScript 变量传递给 Scriptlet 内的 Java 代码