插入排序有三个记录值,其中一个记录着取出来的一个值,也是需要插入的值,从第二个位置开始获取。另外两个初始位置是一样的,从第二个数值开始记录。这个的特点是每一次比较之前,当前假设的数组都是有序的。
public class ArrayIns { private long a[]; private int nElems; public ArrayIns(int maxSize) { a=new long[maxSize]; nElems=0; } //插入 public void insert(long value) { a[nElems++]=value; } //显示 public void display() { for(int j=0;j<nElems;j++) System.out.print(a[j]+" "); System.out.println(); } //排序 public void insertionSort() { int out,in; for(out=1;out<nElems;out++) { long temp=a[out]; in=out; while(in>0&&a[in-1]>=temp) { a[in]=a[in-1]; in--; } a[in]=temp; } } }
public class Test { public static void main(String[] args) { int maxSize=100; ArrayIns arrayBub=new ArrayIns(maxSize); arrayBub.insert(77); arrayBub.insert(99); arrayBub.insert(44); arrayBub.insert(55); arrayBub.insert(22); arrayBub.insert(88); arrayBub.insert(11); arrayBub.insert(0); arrayBub.insert(66); arrayBub.insert(33); arrayBub.display(); arrayBub.insertionSort(); arrayBub.display(); } }
时间: 2024-10-29 19:10:02