您的位置:首页 > 职场人生

插入排序

2017-03-31 16:14 155 查看

插入排序

插入排序不是通过交换位置达到排序的目的,而是通过比较找到合适的位置,然后插入元素,来达到排序的目的的。

类似于打扑克牌,特别是牌数较大的。在分牌时可能要整理自己的牌,牌多的时候怎么整理呢?就是拿到一张牌,找到一个合适的位置插入。这个原理其实和插入排序是一样的。

举个例子,对
<5,3,8,6,4>
这个无序序列进行简单插入排序,首先假设第一个数的位置时正确的,即在拿到第一张牌的时候,没必要整理。然后3要插到5前面,把5后移一位,变成3,5,8,6,4.想一下整理牌的时候应该也是这样吧。然后8不用动,6插在8前面,8后移一位,4插在5前面,从5开始都向后移一位。

具体代码如下:

package com.test;

import java.util.Arrays;

public class InsertSort {
public static void main(String[] args) {
int[] arr = { 8, 3, 4, 5, 2, 3, 0, 33, 1 };
insertSort(arr);
}

public static void insertSort(int[] arr) {
if (arr.length == 0 || arr == null) {
return;
}
for (int i = 1; i < arr.length; i++) {
int target = arr[i];//待插入的元素
int j = i;//给一个从后面能把目标元素插入的具体位置的指针

//找到合适位置之前,把目标大的元素后移
while (j > 0 && arr[j-1] > target) {
arr[j] = arr[j-1];
j--;
}
arr[j] = target;//将目标放在合适的位置
System.out.println(Arrays.toString(arr));
}
}
}


结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息