这是插入排序的正确实现吗?我对Bubble Sort和Insertion排序以及Data结构的新功能感到困惑。
import java.util.Scanner;
import java.util.ArrayList;
public class InsertionSort{
public static void main(String args[]){
Scanner reader = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
System.out.println("Start entering the numbers to sort: ");
while(reader.hasNextInt()){
numbers.add(reader.nextInt());
}
for(int i=0; i<numbers.size(); i++){
for(int j=i; j>0; j--){
if(numbers.get(j) < numbers.get(j-1)){
int temp = numbers.get(j);
numbers.set(j, numbers.get(j-1));
numbers.set(j-1, temp);
}
}
}
System.out.print("Sorted list: ");
for(int i=0; i<numbers.size(); i++){
System.out.print(" "+numbers.get(i));
}
System.out.println();
}
}
答案 0 :(得分:1)
这似乎不正确,你的两个嵌套循环不能正确遍历数组。你的外循环应该来自[0, N-1)
,而你的内循环应该来自(M, N)
,其中M
是外循环的变量。我建议检查冒泡排序和插入排序。
HackerRank存在此问题,您可以通过打印命令验证程序。
答案 1 :(得分:0)
for(int i=1; i<numbers.size(); i++){
int item = numbers[i];
int j = i;
while(j>0 && numbers[j-1]>item){
numbers[j-1] = numbers[j];
j--;
}
numbers[j] = item;
}