插入排序也是一种基本的排序算法,当前索引左边的元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能随时移动。但当索引到达数组的右端时,数组排序就完成了。
代码实现
public class Inserted{
//插入排序的实现
public static void sort(Comparable [] a){
for(int i=1;i<a.length;i++)
{
for(int j=i;j>0&&less(a[j],a[j-1]);j--)
exch(a,j,j-1);
}
}
//判断p是否小于q
public boolean less(Comparable p,Comparable q){
return p.compareTo(q) <0;
}
//交换数组中两个数据的值
public void exch(Comparable [] a,int i, int j){
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//显示数组
public void show(Comparable [] a){
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
//判断数组是否已拍好序
public boolean isSorted(Comparable[] a){
for(int i=1;i<a.length;i++)
if(less(a[i],a[i-1])
return false;
return true;
}
}