博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序算法(C实现)
阅读量:4676 次
发布时间:2019-06-09

本文共 851 字,大约阅读时间需要 2 分钟。

总体思路是:先记录每一次要插入的值,插入的值依次与前面插入的值比较大小,直到找到那个值,然后后面的值全部后移空出的位置,就是他的正确位置。循环n次实现排序。


这里写图片描述

#include
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
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)。
当记录基本有序或者待排序记录中较少时,它是最佳排序方法。

转载于:https://www.cnblogs.com/qukingblog/p/7475330.html

你可能感兴趣的文章
php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
查看>>
使用HttpSessionListener接口监听Session的创建和失效
查看>>
Windows Phone XNAでアニメーション - ぐるぐる
查看>>
20181029 T2 寻宝游戏
查看>>
C++变量作用域、生存期、存储类别
查看>>
数据结构期末复习(四)
查看>>
最最简单的菜单代码
查看>>
js 俩组数据根据id合并
查看>>
POJ2987 Firing 最大权闭合图
查看>>
ItelliJ IDEA下载及获取注册码详解
查看>>
ASP.NET AjaxPro的应用 .AjaxPro使用中“XXX未定义”的一种解决方法(转载的)
查看>>
谷歌和HTTPS
查看>>
Linux 系统的IP与域名解析文件[局域网的DNS]
查看>>
各种实用类
查看>>
【LGP5161】WD与数列
查看>>
最近素数问题——C语言
查看>>
Oracle和Mysql的区别 转载
查看>>
GOF23设计模式
查看>>
Python自然语言处理学习笔记(41):5.2 标注语料库
查看>>
山寨“饿了么”应用中添加菜品数量按钮效果
查看>>