插入排序(有代码)

简介: 插入排序(有代码)

核心思想:把一个数插入有序的数组中,end代表被比较值的下标,如果

不符合条件end的值会覆盖后一个值并且向前走,有合适的值就就会插入end的的后面

void InsertSort(int* a, int n)
{
  for (int i = 0; i < n - 1; i++)
  {
    //单趟
    int end = i;
    int tmp = a[end + 1];//保存要排序的值 
    while (end >= 0) 
    {
      if (a[end] > tmp) //排升序用>, 降序用< 
      {
        a[end + 1] = a[end]; 
        end -= 1; 
      }
      else
      {
        break;
      }
    }
    a[end + 1] = tmp; 
  }
  
}


插入排序有很强的适应性,因为后面要插入时,前面已经是一个有序的数列,挪动数据的次数取决于要查如数据的大小,在很大程度上能减少消耗。时间复杂度:在逆序的时候挪动数据次数从1加到n - 1,是等差数列之和,所以是n^2这个量级。插入排序是一个稳定的排序,如果被比较的数据等于要插入的数据,就会把要插入的数据插入被比较的数据后面。

相关文章
|
3月前
|
搜索推荐
插入排序算法的讲解和代码
【10月更文挑战第12天】插入排序是一种基础的排序算法,理解和掌握它对于学习其他排序算法以及数据结构都具有重要意义。你可以通过实际操作和分析,进一步深入了解插入排序的特点和应用场景,以便在实际编程中更好地运用它。
|
5月前
|
搜索推荐 算法 Shell
排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)
排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)
295 5
|
6月前
|
算法
快排(代码的实现)
快排(代码的实现)
|
7月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
51 0
|
8月前
冒泡排序的快速排序——qsort函数的模拟实现
冒泡排序的快速排序——qsort函数的模拟实现
43 1
|
存储 算法 搜索推荐
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
295 0
|
8月前
|
搜索推荐 Java
java实现冒泡排序和快速排序代码
java实现冒泡排序和快速排序
60 1
|
8月前
|
搜索推荐 算法 程序员
常见排序算法原理及实现——第一部分(冒泡排序、插入排序和选择排序)
常见排序算法原理及实现——第一部分(冒泡排序、插入排序和选择排序)
|
8月前
|
JavaScript 搜索推荐 前端开发
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
83 0
|
8月前
|
人工智能 供应链 搜索推荐
①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]
①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]
105 0