最为关键的是最后排序过程的While循环,在while循环中,只要循环条件成立的话,就不断的往前交换,假如条件不成立,那就是已经到它应该在的位置了,所以要把当前的位置填上原来的元素。
import javax.swing.JOptionPane;
public class insertSort
{
public static void main(String args[])
{
int counter=0;
String output="排序前: ";
int array[]={2,4,3,89,78,45,98,789,75,50};
for(counter=0;counter<array.length;counter++)
{
output+=array[counter]+" ";
}
InsertSort(array);
output+="/n排序后:";
for(counter=0;counter<array.length;counter++)
{
output+=array[counter]+" ";
}
JOptionPane.showMessageDialog(null,output,"Insert Sort By A Nobody",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
public static void InsertSort(int array2[])
{
int i,j,key;
for(j=2;j<=array2.length;j++)
{
key=array2[j-1];
i=j-1;
while(i>0&&array2[i-1]>key)
{
array2[i]=array2[i-1];
i --;
}
array2[i] = key;
}
}
}