算法----插入排序InsertSort每一循环取一个元素插入到前面的有序数组中

public class InsertSort {
    public static int[] sort(int[] array){
        int j;
        //从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
        for(int i = 1 ; i < array.length ; i++){
           //记录要插入的数据,先把这个数据拿出来,之后前面的数组才可以有地方往后面挪
           //给要插入的数据腾出地方
           int tmp = array[i];
            j = i;
            //因为是j = i,所以temp本身就等于array[j],所以只能和他本身前面的比较,所以就是array[j - 1]
            while(j > 0 && tmp < array[j-1]){//从已经排序的序列最右边的开始比较,找到比其小的数
                array[j] = array[j-1];//向后挪动
                j--;
            }
            array[j] = tmp;//存在比其小的数,插入
        }
        return array;
    }

你可能感兴趣的:(算法)