插入排序

特点:原址排序,比较排序,(最坏的情况)时间复杂度O(n^2)

#include <iostream>void insertion_sort(int *arr,int start,int end)
{for (int i = start+1; i < end+1; ++i) {int key = arr[i];int j = i-1;while (j>=start && key<arr[j]){arr[j+1] = arr[j];j--;}arr[j+1] = key;}
}
void show(int *arr,int length)
{for(int i=0;i<length;i++){std::cout<<arr[i]<<" ";}std::cout<<std::endl;
}int main()
{int arr[] = {1,4,6,9,2,5,10,3,7};show(arr,sizeof(arr)/sizeof (int));insertion_sort(arr,0,sizeof(arr)/sizeof (int)-1);show(arr,sizeof(arr)/sizeof (int));return 0;
}

嵌入递归的插入排序
T(n) = T(n) + n-1
(最坏的情况)时间复杂度O(n^2)

void recursion_insertion_sort(int *arr,int start,int end)
{if(start<end){recursion_insertion_sort(arr,start,end-1);int pos = end - 1;int key = arr[end];while (pos >= start && key < arr[pos]){arr[pos+1] = arr[pos];pos--;}arr[pos+1] = key;}
}

算法-排序-插入排序相关推荐

  1. 经典算法排序——插入排序

    插入排序是这样的,一个无需的数组,依次插入到另外一个有序的数组,在插入中排序. 算法描述: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ ...

  2. (数据结构与算法)插入排序和希尔排序

    1. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...

  3. 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...

  4. Java常见排序算法之插入排序

    一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...

  5. java数据结构排序实验报告_java数据结构与算法之插入排序详解

    本文实例讲述了java数据结构与算法之插入排序.分享给大家供大家参考,具体如下: 复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅. ...

  6. 数据结构与算法 | 直接插入排序、希尔排序

    前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...

  7. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  8. 插入排序 php,常用的排序算法(二)--插入排序(PHP实现)

    常用的排序算法系列 插入排序 插入排序是一种逻辑上非常好理解的排序方式,整个排序的核心就是不断在当前已经排好部分数据的数组里,找到合适的位置插入新数据.就像抓扑克牌,抓一张,然后再手里已经部分已经排好 ...

  9. 插入排序算法 java_排序算法实现-插入排序(Java版本)

    原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...

最新文章

  1. 开源代码却无奈遗弃,濒临奔溃的开源开发者们!
  2. 新建表维护程序SM30
  3. 我在这里,等你的故事【小废回家看看】
  4. hdu_5085_Counting problem(莫队分块思想)
  5. ubuntu16.04 xfce4的鼠标主题设置为oxygen-red、修改文件夹背景颜色、两处系统字体设置、右键菜单添加压缩解压选项
  6. why Material request download get an empty BDOC in SMW01 - inconsistent filter setting in R3AC1
  7. 浅谈 Spring 框架注解的用法分析
  8. 前端学习(418):京东制作页面26中间模块划分
  9. 图像处理理论-颜色模式
  10. 数据库---mysql的索引和引擎
  11. grid列的值格式化
  12. Basic INFO: InstallShield中如何获取所调用Exe的返回值
  13. C语言实现动态数字雨
  14. Ukey双因素身份认证步骤 安当加密
  15. 有没有换发型的软件?一分钟智能更换发型
  16. c语言字符统计程序源代码,c语言程序实例大全-220个详细程序源代码.rar
  17. 统计学——线性回归公式推导
  18. postgrest 简单使用
  19. hadoop之hdfs命令详解
  20. 激荡20年:IE浏览器的辉煌与落寞

热门文章

  1. Fiddler之为什么我没有抓到网络请求的js链接
  2. Android studio编译出现Failed to finalize session : INSTALL_FAILED_INVALID_APK
  3. Android之 AudioTrack学习
  4. Java里面的arraycopy总结
  5. 栈和队列之生成窗口最大值数组
  6. 看得懂的外观设计模式 python3 实现
  7. 【C语言简单说】三:整数变量和输出扩展(1)
  8. python发邮件脚本详解_Python发送邮件脚本
  9. java数位倒置递归_有人能解释一下这个递归代码如何在java中反转int吗?
  10. php 点对点,浅析点对点(End-to-End)的场景文字识别