排序之插入排序(java)

来源:互联网 发布:linux创建多层文件夹 编辑:程序博客网 时间:2024/06/05 11:29

插入排序

1、什么是插入排序

假如有一个长度为n的数组a,我们假定当前要比较的位置下标为i,插入排序中我们要求a[0] - a[i-1]有序,所以当我们将a[i]插入到当前有序序列,从i-1开始比较若  a[i]>a[i-1] ,则不再比较,否则继续比较a[i-2],一直

比较到a[0]为止。

2、代码实现

package test01;public class Insertion {public static void sort(Comparable[] a){int N = a.length;for(int i=1;i<N;i++){for(int j=i;j>=0 && less(a[j],a[j-1]);j--){exch(a, j, j-1);}}}private static boolean less(Comparable v,Comparable w){return v.compareTo(w) <0;}private static void exch(Comparable[] a,int i,int j){Comparable t = a[i];a[i] =a[j];a[j] =t;}private static void show(Comparable[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();}public static boolean isSorted(Comparable[] a){//测试数组是否有序for(int i=1;i<a.length;i++){if(less(a[i],a[i-1])){return false;}}return true;}public static void main(String[] args) {}}


3、小结

插入排序对于实际应用中常见的某些类型的非随机数组有效,即若当前数组大致有序,我们使用插入排序算法,时间效率较高。