Java 我的插入排序算法使较大的数字未排序

Java 我的插入排序算法使较大的数字未排序,java,algorithm,insertion-sort,Java,Algorithm,Insertion Sort,我正在尝试对以下列表进行排序(插入到数组中): 10 9 8 7 6 5 4 3 2 1 在执行下面的java代码后,我得到以下信息(不确定为什么最大的数字仍然未排序,提前感谢您提供的任何帮助): 10123456789 我基本上是通过教科书中的以下伪代码实现java代码: procedure insertionsort(a1, a2, ...an: real numbers with n>=2) for j:=2 to n begin i:=1 while a[j]>a[i]

我正在尝试对以下列表进行排序(插入到数组中): 10 9 8 7 6 5 4 3 2 1 在执行下面的java代码后,我得到以下信息(不确定为什么最大的数字仍然未排序,提前感谢您提供的任何帮助): 10123456789

我基本上是通过教科书中的以下伪代码实现java代码:

procedure insertionsort(a1, a2, ...an: real numbers with n>=2)
for j:=2 to n
begin
i:=1
while a[j]>a[i]
  i=:i+1

temp:=a[j]

for k:=0 to j - i - 1
 a[j-k] := a[j-k-1]

a[i]:=temp
end
java代码:

int k, j,i;  
long temp;

for(j=2; j<nElems; j++)   
{
   i=1;  

   //also tried while(a[j]>=a[i]) 
   while(a[j]>a[i]) 
       i = i +1;         

   temp = a[j];            
   for(k=0; k<=(j-i-1);k++)  
         a[j-k] = a[j-k-1];

   a[i] = temp;                 
}// end for
intk,j,i;
长温;
对于(j=2;j=a[i])
而(a[j]>a[i])
i=i+1;
温度=a[j];

对于(k=0;k而言,问题在于伪代码数组是基于1的,而Java数组是基于0的

换衣服

for (j=2; j<nElems; j++) {
    i=1;
    // more code

for(j=2;j在伪代码中,数组索引似乎从“1”开始,而在Java中,数组索引从“0”开始

将代码更改为:

public class InsertionSort{
    public static void main(String[] args) {

        int k,j,i,n=5;  
        long a[]={1025,3689,125,12,254},temp;


        for(j=1; j<n; j++) // instead of j=2
        {
            i=0; // instead of i=1
            while(a[j]>a[i]) 
                i = i+1;         
            temp = a[j];            

            for(k=0; k<=(j-i-1);k++)  
                a[j-k] = a[j-k-1];

            a[i] = temp;                 
        }  // end for

        for(long x:a){
            System.out.print(x+" ");
        }

    }

}
公共类插入排序{
公共静态void main(字符串[]args){
int k,j,i,n=5;
长a[]={10253689125,12254},温度;
对于(j=1;ja[i])
i=i+1;
温度=a[j];
对于(k=0;k
public class InsertionSort{
    public static void main(String[] args) {

        int k,j,i,n=5;  
        long a[]={1025,3689,125,12,254},temp;


        for(j=1; j<n; j++) // instead of j=2
        {
            i=0; // instead of i=1
            while(a[j]>a[i]) 
                i = i+1;         
            temp = a[j];            

            for(k=0; k<=(j-i-1);k++)  
                a[j-k] = a[j-k-1];

            a[i] = temp;                 
        }  // end for

        for(long x:a){
            System.out.print(x+" ");
        }

    }

}