插入排序(有代码)

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

核心思想:把一个数插入有序的数组中,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这个量级。插入排序是一个稳定的排序,如果被比较的数据等于要插入的数据,就会把要插入的数据插入被比较的数据后面。

相关文章
|
4天前
|
算法
|
14天前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
9天前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
13 0
|
2月前
|
搜索推荐 Java
java实现冒泡排序和快速排序代码
java实现冒泡排序和快速排序
32 1
|
11月前
|
存储 算法 搜索推荐
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
195 0
|
2月前
|
搜索推荐 算法 程序员
常见排序算法原理及实现——第一部分(冒泡排序、插入排序和选择排序)
常见排序算法原理及实现——第一部分(冒泡排序、插入排序和选择排序)
|
2月前
|
人工智能 供应链 搜索推荐
①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]
①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]
64 0
|
2月前
|
JavaScript 搜索推荐 前端开发
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
47 0
|
9月前
|
算法 C语言
冒泡排序 - 【利用冒泡排序模拟实现快速排序的功能】
冒泡排序 - 【利用冒泡排序模拟实现快速排序的功能】

热门文章

最新文章