java 插入排序

概念:

  通常人们整理桥牌的方法是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。在计算机的实现中,为了要给插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。与选择排序一样,当前索引左边的所有元素都是有序的,但他们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。但是当索引达到数组的右端时,数组排序就完成了。和选择排序不同的是,插入排序所需的时间取决于输入中元素的初始顺序。

 

package com.test;

import java.util.Arrays;

public class InsertSort {
    
    public static void main(String[] args) {
        int test[] = {49,38,65,97,76,13,27,49};
        sort(test);
        System.out.println(Arrays.toString(test));
    }
    
    public static void sort(int[] a) {
        int j, sort;
        for (int i = 1; i < a.length; i ++) { // 从数组的第二个元素开始循环将数组中的元素插入
            
            sort = a[i];    // 设置数组中的第二个元素为第一次循环要插入的元素
            j = i - 1;
            while (j >= 0 && sort < a[j]) {
                a[j + 1] = a[j];    // 如果要插入的元素小于第j个元素,就将第j个元素向后移动
                j --;
            }
            a[j + 1] = sort; // 直到要插入的元素不小于第j个元素,将sort插入到数组中
        }
    }
}

 

posted @ 2018-06-06 11:40  L狗哥  阅读(382)  评论(0编辑  收藏  举报