java排序插入_Java插入排序详解

插入排序的基本思想:每次将一个待插叙的记录按其元素的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。

(对排序的个人感悟,有错请指出)我发现基本上所有的排序算法都会涉及到将所有要排序的元素分为有序区和无序区。排序无非就是另无序区的元素减一,另有序区的元素加一。知道所有的元素都在有序区中。至于算法的效率就是我们每次从无序区中提取要排序元素的个数。

想象你正在打扑克牌,当你摸到一张牌时,会根据它的大小将它插入到你牌堆的合适位置。这时候你手中的牌,就相当于有序序列,你摸到的牌是待排序的元素,而桌面上的牌堆相当于无序区的元素。这个打牌的例子就是我们直接插入排序的实现过程。

例如:5,1,3,4,2

首先第一个元素将其单独拿出来,就形成了一个有序区,然后再从无序区中提取一个1,1<5;故将1放在5的前面而5的下标要后移一位。

插入排序的实现代码:

public class InsertSort {

public static void insert(int[] arr) {

for (int j = 1; j < arr.length; j++) {

// 控制要插入的元素。因为第一个单独形成有序区,

// 故从第二个开始提取元素。

int key = arr[j];

int i = j - 1;

while (i >= 0 && arr[i] > key) {

arr[i + 1] = arr[i];

i--;

// 将比key大的元素向后移

}

arr[i + 1] = key;

}

}

public static void main(String[] args) {

int[] arr = { 5, 1, 6, 2, 3, 26, 7, 2 };

insert(arr);// 调用刚刚定义的方法测试排序结果

for (int i : arr) {

System.out.print(i + " ");

}

}

}

最后结果如下:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值