排序系列 之 插入排序

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

介绍

  • 插入排序英文名为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)
  • 它是稳定排序,意味着相等元素的相对顺序在排序后保持不变。
相关推荐
wfbcg1 分钟前
每日算法练习:LeetCode 125. 验证回文串 ✅
算法·leetcode·职场和发展
We་ct2 分钟前
LeetCode 295. 数据流的中位数:双堆解法实战解析
开发语言·前端·数据结构·算法·leetcode·typescript·数据流
Aaron158819 分钟前
RFSOC+VU13P/VU9P+GPU通用一体化硬件平台
人工智能·算法·fpga开发·硬件架构·硬件工程·信息与通信·基带工程
c++逐梦人29 分钟前
DFS剪枝与优化
算法·深度优先·剪枝
量化炼金 (CodeAlchemy)31 分钟前
【交易策略】基于随机森林的市场结构预测:机器学习在量化交易中的实战应用
算法·随机森林·机器学习
xiaoye-duck41 分钟前
【C++:哈希表】从哈希冲突到负载因子:深入探索开放定址与链地址法的核心机密
数据结构·c++·散列表
coder_Eight43 分钟前
LRU 缓存实现详解:双向链表 + 哈希表
前端·算法
重生之我是Java开发战士1 小时前
【动态规划】路径问题:不同路径,珠宝的最高价值,下降路径最小和,最小路径和,地下城游戏
算法·游戏·动态规划
Shadow(⊙o⊙)1 小时前
专题一双指针
数据结构
小辉同志1 小时前
739. 每日温度
c++·算法·leetcode