package datestructure;
public class InsertsortAPP
{
public static void main(String[] args)
{
int maxsize=100;
InsertsortArray insertarr;
insertarr=new InsertsortArray(maxsize);
insertarr.insert(23);
insertarr.insert(45);
insertarr.insert(12);
insertarr.insert(34);
insertarr.insert(3);
insertarr.insert(7);
insertarr.insert(98);
insertarr.insert(0);
insertarr.insert(56);
insertarr.display();
insertarr.insertsort();
insertarr.display();
}
}
////////////////////////
package datestructure;
public class InsertsortArray
{
private int[] a;
private int nElems;
public InsertsortArray(int maxsize)
{
a=new int[maxsize];
nElems=0;
}
public void insert(int value)
{
a[nElems]=value;
nElems++;
}
public void insertsort()
{
for(int j=1;j<nElems;j++)
{
int key=a[j];
int i=j;
//while(a[i-1]>=key&&i>0) 这种条件下会出现下界溢出,不同条件之间的并列
// 前后是有序的
while(i>0&&a[i-1]>=key)
{
a[i]=a[i-1];
//i--;
--i;
//上面的为什么一样,但是正确是哪一种?
}
a[i]=key;
}
}
public void display()
{
for(int j=0;j<nElems;j++)
System.out.print(a[j]+" ");
System.out.println("");
}
}