算法-排序-插入排序
插入排序
特点:原址排序,比较排序,(最坏的情况)时间复杂度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. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...
- 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析
排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...
- Java常见排序算法之插入排序
一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...
- java数据结构排序实验报告_java数据结构与算法之插入排序详解
本文实例讲述了java数据结构与算法之插入排序.分享给大家供大家参考,具体如下: 复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅. ...
- 数据结构与算法 | 直接插入排序、希尔排序
前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
- 插入排序 php,常用的排序算法(二)--插入排序(PHP实现)
常用的排序算法系列 插入排序 插入排序是一种逻辑上非常好理解的排序方式,整个排序的核心就是不断在当前已经排好部分数据的数组里,找到合适的位置插入新数据.就像抓扑克牌,抓一张,然后再手里已经部分已经排好 ...
- 插入排序算法 java_排序算法实现-插入排序(Java版本)
原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...
最新文章
- 开源代码却无奈遗弃,濒临奔溃的开源开发者们!
- 新建表维护程序SM30
- 我在这里,等你的故事【小废回家看看】
- hdu_5085_Counting problem(莫队分块思想)
- ubuntu16.04 xfce4的鼠标主题设置为oxygen-red、修改文件夹背景颜色、两处系统字体设置、右键菜单添加压缩解压选项
- why Material request download get an empty BDOC in SMW01 - inconsistent filter setting in R3AC1
- 浅谈 Spring 框架注解的用法分析
- 前端学习(418):京东制作页面26中间模块划分
- 图像处理理论-颜色模式
- 数据库---mysql的索引和引擎
- grid列的值格式化
- Basic INFO: InstallShield中如何获取所调用Exe的返回值
- C语言实现动态数字雨
- Ukey双因素身份认证步骤 安当加密
- 有没有换发型的软件?一分钟智能更换发型
- c语言字符统计程序源代码,c语言程序实例大全-220个详细程序源代码.rar
- 统计学——线性回归公式推导
- postgrest 简单使用
- hadoop之hdfs命令详解
- 激荡20年:IE浏览器的辉煌与落寞
热门文章
- Fiddler之为什么我没有抓到网络请求的js链接
- Android studio编译出现Failed to finalize session : INSTALL_FAILED_INVALID_APK
- Android之 AudioTrack学习
- Java里面的arraycopy总结
- 栈和队列之生成窗口最大值数组
- 看得懂的外观设计模式 python3 实现
- 【C语言简单说】三:整数变量和输出扩展(1)
- python发邮件脚本详解_Python发送邮件脚本
- java数位倒置递归_有人能解释一下这个递归代码如何在java中反转int吗?
- php 点对点,浅析点对点(End-to-End)的场景文字识别