当前位置: 首页 > news >正文

数据结构-插入排序笔记

看里面的图解来理解

【数据结构】八大排序(超详解+附动图+源码)_数据结构排序-CSDN博客

一   基本思想:

插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

二  代码实现

public class Main {// 主方法,程序的入口点public static void main(String[] args) {// 初始化一个整型数组,包含一些元素int arr[] = {221, 334, 300, 1};// 调用sort方法对数组进行排序sort(arr);// 遍历排序后的数组,并打印每个元素for(int i : arr){System.out.print(i + " ");}}/*
//        插入排序可以理解成,将一个数组分成两个部分,一边是有序的一边是无序的。
//        最开始我们将数组第一个元素arr【0】看成有序数组,然后后面的都是无序数组
//        将后面无序数组的元素按一定算法找到要插入的位置并且插入
//         */// 定义一个静态方法sort,用于对整型数组进行排序static void sort(int arr[]){// 外层循环,从数组的第二个元素开始遍历到最后一个元素for(int i = 1 ; i < arr.length; i++){// 将当前元素的值赋给insertValint insertVal = arr[i];// 初始化插入位置的索引为当前元素的前一个位置int insertIndex = i - 1;// 内层循环,用于将insertVal插入到已排序序列中的正确位置while(insertIndex >= 0 && insertVal < arr[insertIndex]){// 将当前位置的元素向后移动一位arr[insertIndex + 1] = arr[insertIndex];// 插入位置索引向前移动一位insertIndex--;}// 将insertVal插入到正确的位置arr[insertIndex + 1] = insertVal;}}
}

三  选择排序的特性总结

  1.  直接选择排序思考非常好理解,但是效率不是很好(不论数组是否有序都会执行原步骤)。实际中很少使用
  2.  时间复杂度:O(N^2)
  3.  空间复杂度:O(1)
  4.  稳定性:不稳定

http://www.mrgr.cn/news/65394.html

相关文章:

  • vulhub之phpmyadmin
  • 云原生周刊:微服务架构 2025 年的发展趋势丨2024.11.04
  • 【Centos】在 CentOS 9 上使用 Apache 搭建 PHP 8 教程
  • 系统架构设计师(软考高级)一站式通关课程
  • 惊喜!RFID技术的应用竟如此多元?
  • pgSQL中对json数组中的一个元素中的字段进行条件查询
  • EDA二维码生成工具 V1.2
  • 西门子触摸屏维修6AV7200-1JA11-0AA0防爆显示屏维修
  • SuperMap GIS基础产品FAQ集锦(20241104)
  • C# EF 使用
  • C++笔记-解决gdb调试时不显示出错行的问题
  • 13.字符串
  • AI智能体工具:AutoGLM、MobileAgent、Claude compute use
  • Java面向对象编程高级-枚举类(四)
  • 基于SSM的学生选课系统+LW参考示例
  • CSRF初级靶场
  • 三、 问题发现(日志分析)
  • qt QTimer详解
  • SpringBoot框架:新闻稿件管理技术革新
  • 【Linux驱动开发】通过设备树节点来配置和调用GPIO(pinctrl节点和gpio-controller)
  • Android 15 在状态栏时间中显示秒数
  • NVR批量管理软件/平台EasyNVR多品牌NVR管理工具/设备的广泛应用
  • 现在性能测试岗位主要有什么要求啊?
  • spring生命周期
  • 机场网约车智能出行可以选择不同车型吗?
  • 使用onnxruntime c++ API实现yolov5m视频检测