1、插入排序:
将排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从第二个元素开始到最后一个元素为止依次扫描未排序序列,并将扫描到的每个元素插入有序序列的适当位置。
简单来说,就是用内循环第i个数与第i个数之前的数进行比较,若第i个数小于第i-1个数,则将第i个数插入到第i-1个数之前。
2、动画演示:
3、代码演示:
/**
* 插入排序
*/
public class sort4 {
public static void main(String[] args) {
//定义数组
int a[] = {3,5,2,4,8,0,1,6,9,7};
int n;
// 将外循环的长度定义为数组的长度
for (int i = 1; i < a.length; i ++) {
//从第i个元素开始向前循环
for (int j = i; j > 0; j --) {
//若第j-1个元素>第j个元素,则交换位置
if (a[j - 1] > a[j]) {
n = a[j - 1];
a[j - 1] = a[j];
a[j] = n;
}
}
//每外循环完成一次,就打印一次结果
for (int m = 0; m < a.length; m ++) {
System.out.print(a[m] + " ");
}
System.out.println();
}
}
}
运行结果:
3 5 2 4 8 0 1 6 9 7
2 3 5 4 8 0 1 6 9 7
2 3 4 5 8 0 1 6 9 7
2 3 4 5 8 0 1 6 9 7
0 2 3 4 5 8 1 6 9 7
0 1 2 3 4 5 8 6 9 7
0 1 2 3 4 5 6 8 9 7
0 1 2 3 4 5 6 8 9 7
0 1 2 3 4 5 6 7 8 9
4、插入排序与选择排序和冒泡排序的对比:
(1)、插入排序是用内循环第i个数与第i个数之前的数进行比较,若第i个数小于第i-1个数,则将第i个数插入到第i-1个数之前。
点击查看选择排序与冒泡排序
(2)、选择排序是用外循环的 i 值(基准值)与内循环的 j 值(需要进行比较的值)逐一比较,并将最小(大)的数放在前面。
(3)、冒泡排序是内循环中相邻两个数进行比较,若第 j 位比第 j+1 位的数大则交换两个数的位置。