- !!!排序仅针对于数组哦
- 本次排序是按照升序来的哦
介绍
- 插入排序英文名为InsertSort
基本思路
- 1、认为数组当中的第一个数值已经排好序了
- 2、定义一个游标从第二个数值开始不断地向后进行遍历
- 3、游标指向的数据插入已经排好序的数组中
代码
java
<!----java----->
public static void main(String[] args) {
int[] arr={10,2,3,8,1,9};
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr){
// 默认第一个已经排好序了,所以我们从第二个元素开始
for(int i=1;i<arr.length;i++){
// 定义游标j,依次从后往前遍历
for(int j=i;j>0;j--){
// 前一个数比当前数小,交换
if(arr[j-1]>arr[j]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}
<!------------------------>
运行结果;
[1, 2, 3, 8, 9, 10]
python
<!----python----->
def insertSort(arr):
for i in range(1,len(arr)):
for j in range(i,0,-1):
if arr[j-1]>arr[j]:
arr[j],arr[j-1] = arr[j-1],arr[j];
print(arr)
arr=[10,2,3,8,1,9];
insertSort(arr)
<!------------------------>
运行结果;
[1, 2, 3, 8, 9, 10]
老规矩,上图
复杂度
- 时间复杂度为:O(n²)
- 空间复杂度为:O(1)
- 它是稳定排序,意味着相等元素的相对顺序在排序后保持不变。