Java 插入排序pt2-Hackerrank

Java 插入排序pt2-Hackerrank,java,sorting,Java,Sorting,有人能检查一下我的代码,看看为什么最后一个索引不能按预期工作吗?任何关于如何改进的建议都将不胜感激 import java.io.*; import java.util.*; public class Solution { public static void insertionSortPart2(int[] ar) { int key; int seen; for (int i = 0 ; i < ar.length-1; i++){ ke

有人能检查一下我的代码,看看为什么最后一个索引不能按预期工作吗?任何关于如何改进的建议都将不胜感激

import java.io.*;
import java.util.*;

public class Solution {

public static void insertionSortPart2(int[] ar) {       
 int key;
 int seen;

    for (int i = 0 ; i < ar.length-1; i++){
        key = ar[i];
        seen = i;

        while (seen <ar.length-1 && ar[seen+1]<key){

            ar[seen]= ar[seen+1];
             seen = seen+1;
        }

        ar[seen]=key;
            printArray(ar);
    }  
}



public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
   int s = in.nextInt();
   int[] ar = new int[s];
   for(int i=0;i<s;i++){
        ar[i]=in.nextInt(); 
   }
   insertionSortPart2(ar);    

}    
private static void printArray(int[] ar) {
  for(int n: ar){
     System.out.print(n+" ");
  }
    System.out.println("");
 }
}
import java.io.*;
导入java.util.*;
公共类解决方案{
公共静态void insertionsorpart2(int[]ar){
int键;
int-seen;
对于(int i=0;i当你以错误的方式做这件事时,请再读一遍第一部分

假设第一个元素已排序,然后尝试在排序列表中逐个插入元素

试试这个:

    public static void insertionSortPart2(int[] ar) {
        int key;
        int seen;

        for (int i = 1 ; i < ar.length; i++){
            key = ar[i];
            seen = i;

            while (seen > 0 && ar[seen-1] > key) {
                ar[seen] = ar[seen-1];
                seen = seen - 1;
            }

            ar[seen]=key;
            printArray(ar);
        }
    }
publicstaticvoid插入端口2(int[]ar){
int键;
int-seen;
对于(int i=1;i0&&ar[seen-1]>键){
ar[seen]=ar[seen-1];
SEED=SEED-1;
}
ar[seen]=键;
打印阵列(ar);
}
}

您是否已使用调试器完成此操作?