插入排序
思路:把右侧无序的数据项逐个插入到左侧有序的部分。
如图:
插入排序主要代码:
public void insertionSort(){ //插入排序
int in,out;
for(out=1;out<nElem;out++){
long temp=a[out];
in=out;
while(in>0&&a[in-1]>=temp){
a[in]=a[in-1];
in--;
}
a[in]=temp;
}
}
插入排序完整代码示例:
package com.swy.sort2;
public class ArrayIns {
private long[] a; //定义数组
private int nElem; //标记数组长度
public ArrayIns(int max){ //构造函数
a=new long[max];
nElem=0;
}
public void display(){ //打印 数组内容
for(int j=0;j<nElem;j++){
System.out.print(a[j]+" ");
}
System.out.println("");
}
public void insert(long value){ //插入方法
a[nElem]=value;
nElem++;
}
public void insertionSort(){ //插入排序
int in,out;
for(out=1;out<nElem;out++){
long temp=a[out];
in=out;
while(in>0&&a[in-1]>=temp){
a[in]=a[in-1];
in--;
}
a[in]=temp;
}
}
}
package com.swy.sort2;
public class InsertSortApp {
public static void main(String[] args) {
int maxSize=100;
ArrayIns arr;
arr=new ArrayIns(maxSize);
arr.insert(77);
arr.insert(55);
arr.insert(88);
arr.insert(00);
arr.insert(33);
arr.insert(22);
arr.display();
arr.insertionSort();
arr.display();
}
}
输出:
77 55 88 0 33 22
0 22 33 55 77 88