排序系列 之 插入排序

  • !!!排序仅针对于数组哦
  • 本次排序是按照升序来的哦

介绍

  • 插入排序英文名为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)
  • 它是稳定排序,意味着相等元素的相对顺序在排序后保持不变。
相关推荐
302wanger9 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼9 小时前
CF——错题的集合
算法
xxwxx__9 小时前
C++ AVL 树深度剖析:平衡二叉搜索树原理、源码与面试考点
数据结构·c++
SL_staff9 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈
Logic1019 小时前
C语言/数据结构数组题解:数字列表加一(Plus One)——进位处理与数组扩展
c语言·数据结构·模拟·数组·时间复杂度·算法题·进位
陌シ未央ゞ9 小时前
基于BM25算法和RRF实现的混合索引(java版)
人工智能·spring boot·后端·算法
renhongxia19 小时前
数字孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·算法·机器学习·数字孪生
Navigator_Z9 小时前
LeetCode //C - 1250. Check If It Is a Good Array
c语言·算法·leetcode
CodeRecycle11 小时前
Python 自动配置 pip 支持库(通过 Windows Bat 脚本)
算法
liliangcsdn11 小时前
特质偏度因子的计算示例和分析
算法