【408数据结构与算法】—直接插入排序(十五)

简介: 每步将一个待排序的对象,按其关键码大小,插入到前面已经拍好序的一组对象的适当位置上,直到对象全部插入为止。

【408数据结构与算法】—直接插入排序(十五)

一、插入排序基本思想

  • 每步将一个待排序的对象,按其关键码大小,插入到前面已经拍好序的一组对象的适当位置上,直到对象全部插入为止。
  • 在有序序列中插入一个元素,保持序列有序,有序长度不断增加
  • 起初,a【0】是长度为1的子序列,然后,逐一将a[1]至a[n-1]插入到有序子序列

简化版:插入排序的原理就是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入与我们玩纸牌游戏一样

2345_image_file_copy_292.jpg

2345_image_file_copy_293.jpg

二、有序插入方法

  1. 在插入a[i]前,数组a的前半段a[0]a[i-1]是有序段,后半段a[i]a[n-1]是停留于输入次序的无序段。
  2. 插入a[i]使a[0]~a[i-1]有序,也就是要为a[i]找到有序位置j(0<=j<=i),将a[i]插入到a[j]的位置上

三、插入位置图示

❤️ 插在中间

2345_image_file_copy_294.jpg

❤️❤️插在最前面

2345_image_file_copy_295.jpg

❤️❤️❤️插在最后面

2345_image_file_copy_296.jpg

四、插入排序的种类

2345_image_file_copy_297.jpg

直接插入排序

直接插入排序—采用顺序查找的方法查找插入的位置

直接排序插入算法

2345_image_file_copy_298.jpg

五、直接插入排序—性能分析

实现排序的基本操作有两个

  • 比较序列中两个关键字的大小
  • 移动记录

最好的情况(关键字在记录中顺序有序)

2345_image_file_copy_299.jpg

最坏的情况(关键字在记录序列中逆序有序)

2345_image_file_copy_300.jpg

2345_image_file_copy_301.jpg

时间复杂度结论:

  • 原始数据越接近有序,排序速度越快
  • 最坏的情况(输入的数据是逆序有序) Tw(n)=O(n^2)
  • 平均情况,耗时差不多是最坏情况的瘀斑 Te(n)=O(n^2)

要提高查找速度

  • 减少元素的比较次数
  • 减少元素的移动次数

📢📢总结

2345_image_file_copy_302.jpg

相关文章
|
2月前
|
搜索推荐 测试技术
【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】
【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】
|
2月前
|
算法 搜索推荐 C#
|
3月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
3月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
25 2
|
3月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
3月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
25 0
|
3月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:直接插入排序和希尔排序
【C/排序算法】:直接插入排序和希尔排序
28 0
|
3月前
|
搜索推荐 算法
排序算法之插入排序
排序算法之插入排序
30 0
|
4月前
|
存储 搜索推荐 算法
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
|
3月前
|
搜索推荐
排序算法---插入排序-----详解&&代码
排序算法---插入排序-----详解&&代码