1、把所有的元素分为两种,已排序与未排序;
2、找到未排序组中的第一个元素,向已经排序的组中插入;
3、倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于待查元素, 那么就把待插元素放到这个位置,其他元素向后移动一位;
代码实现:import java.util.Arrays; public class Insertion { public static void sort(Comparable[] a){ for(int i = 1;i0;j--){ //比较索引j处的值和索引j-1处的值,如果索引j-1处的值比索引j处的值大,则交换数据,如果不大,那么当前位置就是合适的位置,退出循环即可; if(greater(a[j-1],a[j])){ exch(a,j,j-1); }else{break;} } } } private static boolean greater(Comparable v,Comparable w){ return v.compareTo(w)>0; } private static void exch(Comparable[] a,int i,int j){ Comparable temp; temp = a[i]; a[i]=a[j]; a[j]=temp; } public static void main(String[] args) { Integer a [] = {4,3,2,10,12,1,5,6}; Insertion.sort(a); System.out.println(Arrays.toString(a)); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)