算法__插入排序

插入排序:就是将数据插入到已经排好序的数列中,使得最终的数列顺序正确。

举个例子:

5 8 3 5 2

第一轮:

这个数组,我们可以先把 5 这个第一位数字视为已经排好的数列,将8加入顺序排好的队列中。

1.  8和5做比较,8大于5,所以8排在5右边;

5 8 3 5 2

第二轮:

现在 5  8  就是已经排好的数组,将3插入这个队列中。

1.  8和3比较,3比8小,3应该排在8的左边(代码中实现可以只将8移动到3的位置,3先拿一个数字缓存,最后找到自己位置再赋值,减少每次数字互换)

2.  3和5比较,3比5小,3应该在5的左边;

3 5 8 5 2

第三轮:

3  5  8 是有序数组,将5插入。

1.  5和8比较,5小,5在8左边;

2.  5和5比较,5不比左边5小,不交换;

3 5 5 8 2

第四轮:

3  5  5  8 是有序数组,将2插入。

1.  2和8比较,2小,2在8左边;

2.  2和5比较,2小,2在5左边;

3.  2和5比较,2小,2在5左边;

4.  2和3比较,2小,2在3左边;

2 3 5 5 8

代码如下:

    private int[] querySort1(int array[]) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            int j = i - 1;
            for (; j >= 0 && temp < array[j]; j--)
                array[j + 1] = array[j];
            array[j + 1] = temp;
        }
        return array;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章