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)。
适合数据量较小或基本有序的序列。
浙公网安备 33010602011771号