博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序
阅读量:4959 次
发布时间:2019-06-12

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

插入排序不适合对于数据量比较大的排序应用。如果数据量很小,比如量级小于千,插入排序还是一个不错的选择。

1 /* 2  3 1.从第一个元素开始,该元素可以认为已经被排序 4  5 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 6  7 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 8  9 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置10 11 5.将新元素插入到该位置后12 13 6.重复步骤2~514 15 */16 #include 
17 18 19 // 分类 -------------- 内部比较排序20 21 // 数据结构 ---------- 数组22 23 // 最差时间复杂度 ---- 最坏情况为输入序列是降序排列的,此时时间复杂度O(n^2)24 25 // 最优时间复杂度 ---- 最好情况为输入序列是升序排列的,此时时间复杂度O(n)26 27 // 平均时间复杂度 ---- O(n^2)28 29 // 所需辅助空间 ------ O(1)30 31 // 稳定性 ------------ 稳定32 33 34 35 void InsertSort( int A[], int n )36 {37 int i, j, get;38 for( i = 0; i < n; i++ ) // 类似抓扑克牌排序39 {40 get = A[i+1]; // 右手抓到一张扑克牌41 j = i; // 拿在左手上的牌总是排序好的42 while( j >= 0 && A[j] > get ) // 将抓到的牌与手牌从右向左进行比较43 {44 A[j+1] = A[j]; // 如果该手牌比抓到的牌大,就将其右移45 j--;46 }47 A[j+1] = get; // 直到该手牌比抓到的牌小(或二者相等),将抓到的牌插入到该手牌右边(相等元素的相对次序未变,所以插入排序是稳定的)48 }49 }50 51 int main()52 {53 int A[] = { 8, 5, 2, 6, 9, 3, 1, 4, 0, 7 }; // 从小到大插入排序54 int n = sizeof(A) / sizeof(int);55 56 InsertSort( A, n );57 58 int i;59 printf("插入排序结果:");60 for( i = 0; i < n; i++ )61 {62 printf("%d ", A[i]);63 }64 printf("\n");65 66 return 0;67 }

 

转载于:https://www.cnblogs.com/itsad/p/7865841.html

你可能感兴趣的文章
Android网络多线程断点续传下载
查看>>
Spring Cloud与微服务构建:微服务简介
查看>>
前端跨域之jsonp跨域
查看>>
自己用h5写的转盘。写贴上来吧。
查看>>
Python开发基础 day12 模块2
查看>>
Socket编程 (异步通讯,解决Tcp粘包) - Part3
查看>>
OSI七层协议
查看>>
Linux 空闲空间的格式化与加载
查看>>
Linux 终端 Bash 常用快捷键介绍及经验
查看>>
关于twitter的GIF变mp4的测试
查看>>
Android中通过typeface设置字体
查看>>
android 优秀框架整理
查看>>
java线程中的interrupt,isInterrupt,interrupted方法
查看>>
where can I find source of com.android.internal.R.styleable.AlertDialog_multiChoiceItemLayout?
查看>>
ViewDragHelper详解
查看>>
Akka(43): Http:SSE-Server Sent Event - 服务端主推消息
查看>>
HTTP缓存和CDN缓存
查看>>
HDU-1171 Big Event in HDU(生成函数/背包dp)
查看>>
Babel 是干什么的
查看>>
cocos2dx-3.0(8)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
查看>>