插入排序
1、原理
- 直接插入排序的基本操作是 将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。 对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。 接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。
2、时间复杂度
时间复杂度O(n^2),直接插入排序法比冒泡和简单选择排序的性能要好一些。
3、java代码
public void insertSort(int[] nums) {
int i, j;
//待插入有序序列中的数据
int insertNode;
//依次遍历无序序列中的数据,使其插入到有序序列的恰当位置
for (i = 1; i < nums.length; i++) {
//设置待插入数
insertNode = nums[i];
//有序序列的末端
j = i - 1;
//从有序序列的末端 开始找适合插入的位置
while (j >= 0 && insertNode < nums[j]){
//有序序列中的元素大于待插入数,将其后移
nums[j+1]=nums[j];
j--;
}
//有序序列的第j个元素小于待插入数,j+1位为插入位
nums[j+1]=insertNode;
}