1.题目
2.解法
插入排序的算法思路是这样的:
将数组的第一个元素看作是已排序的序列,从第二个元素开始,依次往已排序的序列中插入。
每次插入时,从已排序的序列的末尾开始比较,
- 如果待插入的元素小于当前比较的元素,则将当前元素后移一位,
- 否则将待插入的元素放在当前位置。
重复上述步骤,直到所有的元素都插入到已排序的序列中。
public class InsertSort { public static void main(String[] args) { int[] nums = new int[]{1, 8, 5, 2, 7, 0}; sortArray(nums); System.out.println(); } public static void sortArray(int[] nums) { int length = nums.length; for (int i = 0; i < length - 1; i++) { int preIndex = i; int curVal = nums[i + 1]; while (preIndex >= 0 && nums[preIndex] > curVal) { nums[preIndex + 1] = nums[preIndex]; preIndex--; } nums[preIndex + 1] = curVal; } } }
3.总结
插入排序的特点是:
算法简单,易于实现。
稳定性好,不会改变相等元素的相对位置。
时间复杂度为O (n²),空间复杂度为O (1)。
适合数据量较小或基本有序的序列。