美文网首页
直接插入排序(java)

直接插入排序(java)

作者: 丨ouo丨 | 来源:发表于2017-10-27 17:07 被阅读24次

    扑克牌是我们几乎每个人都可能玩过的游戏。最基本的扑克玩法都是一边摸牌,一边理牌。假如我们拿到了这样一手牌,如图9-5-1所示。啊,似乎是同花顺呀,别急,我们得理一理顺序才知道是否是真的同花顺。请问,如果是你,应该如何理牌呢?

    应该说,哪怕你是第一次玩扑克牌,只要认识这些数字,理牌的方法都是不用教的。将3和4移动到5的左侧,再将2移动到最左侧,顺序就算是理好了。这里,我们的理牌方法,就是直接插入排序法。

    (以上内容来自: 程杰. “大话数据结构” )

    假设初始序列53462。以下画了个图表示执行过程

    直接插入排序
    public class StraightInsertSort {
        public static int[] StraightInsertSort(int[] arr){
            int temp;
            for(int i = 1; i < arr.length; i++){ // 从第二个数开始插入,第一个默认有序
                if(arr[i] < arr[i-1]){ // 如果比第一个数大,就也有序;如果比第一个数小就要考虑插入
                    temp = arr[i];//记录当前数
                    int j;
                    for(j = i-1; j >= 0 && arr[j] > temp; j--){//从后往前循环,比当前数大就往后挪一个位置
                        arr[j+1] = arr[j];
                    }
                    //循环执行完后把arr[j+1]这个位置腾出来了,这个位置就是该插入的位置
                    arr[j+1] = temp;
                }
            }
            return  arr;
        }
    }
    

    相关文章

      网友评论

          本文标题:直接插入排序(java)

          本文链接:https://www.haomeiwen.com/subject/xoliuxtx.html