原理:
把所有的元素分为两组,一组为排序过得,一组为未排序过得。
每轮取未遍历组中第一个元素a,然后从后往前遍历已排序组,将a和当前索引对应的值进行比较,直到找到一个元素小于等于a,然后将a插入这个元素之后,原先这个元素之后的元素都想后移动一位。
代码实现
package china.guo.calc.simplesort;
import java.util.Arrays;
//插入排序
public class Insert {
//排序
public static void sort(Comparable[] array) {
for (int i =1;i<array.length; i++) {
for (int j = i; j >0; j--) {
if (greater(array[j],array[j-1])){
break;
}else{
exchange(array,j,j-1);
}
}
}
}
//比较c1和c2大小
public static boolean greater(Comparable c1,Comparable c2){
return c1.compareTo(c2)>0;
}
//交换索引i和索引j处的元素位置
public static void exchange(Comparable[] array,int i,int j){
Comparable temp;
temp = array[i];
array[i]=array[j];
array[j]=temp;
}
public static void main(String[] args) {
Integer[] array = new Integer[]{4,5,3,6,1,2};
sort(array);
System.out.println(Arrays.toString(array));
}
}
网友评论