插入排序算法(C实现)
总体思路是:先记录每一次要插入的值,插入的值依次与前面插入的值比较大小,直到找到那个值,然后后面的值全部后移空出的位置,就是他的正确位置。循环n次实现排序。
#include<stdio.h>
void insertvalue(int a[],int n);
void main()
{int a[5]= {5,9,47,3,4};printf("排序之前:\n");for(int i=0; i<5; i++){printf("%d\t",a[i]);}insertvalue(a,5);printf("\n");printf("排序之后:\n");for(int i=0; i<5; i++){printf("%d\t",a[i]);}}
void insertvalue(int a[],int n)
{int key;for(int i=1; i<n; i++){key=a[i];int j=i-1;while(a[j]>key&&j>=0) //寻找插入位置{a[j+1]=a[j];j--;//与前面的数比较 }a[j+1]=key;//最终位置}}
最好情况下,正序,总的比较次数为n-1次,记录移动的次数2(n-1),时间复杂度为O(n)。
最坏情况下,逆序,总的比较次数为(n+2)*(n-1)/2,移动(n+4)(n-1)/2次,时间复杂度O(n^2)。
平均情况下,各种概率相同,总的比较次数为(n+2)*(n-1)/4,移动(n+4)(n-1)/4次,时间复杂度O(n^2)。
当记录基本有序或者待排序记录中较少时,它是最佳排序方法。
插入排序算法(C实现)相关推荐
- 十五、插入排序算法(两种方式)
一.插入排序法思想 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序 ...
- 插入排序算法(基于Java实现)
title: 插入排序算法(基于Java实现) tags: 插入算法 插入排序算法原理及代码实现: 一.插入排序算法的原理 首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间 ...
- c#冒泡、快速、选择和插入排序算法的项目应用
在之前的一篇文章里,我们简单地实现了对一维数组的四种排序算法,但是在实际的项目中,我们排序的方式可能(几乎是一定)不止仅仅按照数字排序.我们常常按照合适的需要的排序方式进行排序,比如航班信息可能按时间 ...
- 上标3下标6算法_插入排序算法导学案
本文为"选考VB算法专题系列讲座9插入排序算法"视频配套的导学案,请同学们先完成导学案再收看视频.明天将推送"选考VB算法专题系列讲座9插入排序算法"视频,敬请 ...
- java实现插入排序算法 附单元测试源码
插入排序算法 public class InsertSortTest {/*** @param args*/public static void main(String[] args) {int[] ...
- 插入排序算法 及其二分搜索优化版 C++代码实现 恋上数据结构笔记
复习梗概 文章目录 复习梗概 插入排序算法思想 插入排序时间复杂度与特性(多少,与什么有关?) 插入排序基础版 插入排序2nd优化版(优化了哪里?) !!!插入排序二分搜索优化版(优化了哪里?如何优化 ...
- 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析
排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...
- 动图图解C语言插入排序算法,含代码分析
C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...
- JavaScript实现InsertionSort插入排序算法(附完整源码)
JavaScript实现InsertionSort插入排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 InsertionSort.js完整源代码 Compara ...
- python算法与数据结构-插入排序算法(34)
阅读目录 一.插入排序的介绍 二.插入排序的原理 三.插入排序的图解 四.插入排序的python代码实现 五.插入排序的C语言代码实现 六.插入排序的时间复杂度 七.插入排序的稳定性 一.插入排序的介 ...
最新文章
- 万字长文带你入门 GCN
- 无法链接到SQL Server远程服务器的解决
- UOJ37. 【清华集训2014】主旋律
- Android Cursor自动更新的实现和原理
- oracle 11g 大量废连接占满数据库连接问题处理
- hadoop2.20+hive+sqoop+mysql数据处理案例
- OpenGL中的上下文 理解整理
- Java-Socket实现文件的断点续传
- 【书摘】一种基于Git的版本管理方案
- 清华计算机系山东分数,清华大学山东录取分数线|2021清华大学山东分数线|2021年清华大学山东高考分数线|2021年清华大学山东招生计划录取人数...
- Json文件转Map(三)之获取嵌套Map值
- 手动创建maven项目+cmd+webapp+tomcat
- Qt学习之C++基础
- CSS3的box-sizing 属性
- C语言/C++项目——黄金矿工
- 秦储承办 | 西部数博会暨第三届西安区块链产业发展论坛成功召开!
- 错误:.TemplateProcessingException: Exception evaluating SpringEL expression:
- 香橙派PC Plus电脑开发板制作网络打印服务器
- python3大神器_Python三大神器之pip的安装
- putty下载linux文件到本地windows