插入排序

插入排序的工作方式非常像我们抓扑克牌。开始时我们手中的牌是空的,并且此时桌子的牌面朝下,之后我们每次抓到扑克牌之后都会将其插入到指定的位置。通常来讲我们会从头到位开始扫描,直到找到一个合适的位置,这个合适的位置就是后面的比它大,前面的比它小。

下面我们用代码进行实现:

public class InsertSort
{
    public static void main(String[] args)
    {
        int[] nums = {5, 3, 4, 2, 6, 1, 7};
        
        // 插入排序思想:
        // 1、从第二个数字开始往后遍历,(因为第一个数只有一个那么一定是排序好的)
        // 2、将这个数字与前面的所有数字进行比较,如果比前面的数字小则进行交换
        // 3、直到遇到比当前值小或者到头......
        for (int num : nums)
        {
            System.out.print(num + " ");
        }
        for (int i = 1; i < nums.length; i++) {
            int value = nums[i];
            int j = i - 1;
            while(j >= 0 && nums[j] > value)
            {
                nums[j+1] = nums[j]; // 将j+1的值赋值为j的值
                nums[j--] = value; // 将j的值赋值为value
            }
        }
        System.out.println("\r\n------- 我是分割线  ------");
        for (int num : nums)
        {
            System.out.print(num + " ");
        }
    }
}

 

posted @ 2017-07-04 09:24  ~旗木卡卡东~  阅读(80)  评论(0编辑  收藏  举报