排序:把无序的数据变得有序,默认升序。(笔试面试排名第一的内容)

1.直接(简单)插入排序(例如:扑克牌发牌时,每发一张,将牌有序插入)

从当前位置开始, 从后往前找比当前数字小的, 找到后插入到这个小的数字后面;
在找的过程中, 如果发现一个比当前数字大, 同时将这个数字往后挪;
 特点:1.越有序越快,完全有序的时间复杂度为:O(n),(非常重要,这个是希尔排序的基础),

2.如果碰见一个和插入元素相等的元素,那么把插入元素放在相等元素的后面,即就是想等元素的先后顺序并没有改变,所以插入排序是一个稳定的排序。

代码实现如下:

#include <stdio.h>void InsertSort(int* arr, int len)//O(n^2),最好的情况,O(1),
{int tmp;//存放当前处理的数字int j;for (int i = 1; i < len; i++)//从第二个数字开始{//1 2 3 4 5tmp = arr[i];for (j = i - 1; j >= 0; j--)//从后往前找第一个比tmp小的数字{if (arr[j] > tmp)//arr[j]需要后移arr[j + 1] = arr[j];elsebreak;}arr[j + 1] = tmp;}
}//打印函数
void show(int* arr, int len)
{for (int i = 0; i < len; i++){printf("%d  ", arr[i]);}printf("\n");
}int main()
{int arr[] = { 4,6,2,8,9,0,1,7,3,5 };InsertSort(arr, sizeof(arr) / sizeof(arr[0]));show(arr, sizeof(arr) / sizeof(arr[0]));return 0;
}

运行结果:

C语言--八大排序之直接插入排序算法相关推荐

  1. (C语言)八大排序之:插入排序、冒泡排序、选择排序

    1 /* 2 * FILE: p198_sort.c3 * DATE: 201801144 * --------------5 */6 7 #include <stdio.h>8 9 /* ...

  2. C语言八大排序算法,附动图和详细代码解释!

    文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...

  3. 硬核!C语言八大排序算法,附动图和详细代码解释!

    来源 :C语言与程序设计.竹雨听闲等 一 前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二 八大排序算法 ...

  4. 序列划分c语言,一篇“get”C语言八大排序算法

    如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二.八大排序算法 排序算法作为数据结构的重要部分,系统地学习一下是 ...

  5. c语言的八大排序算法,程序员的内功:C语言八大排序算法

    四 一.冒泡排序 冒泡排序算法的运作如下: ●比较相邻的元素.如果第一个比第二个大,就交换他们两个. ●对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. ...

  6. “手把手”教你C语言八大排序

    C语言八大排序详解 目录 排序的概念及其应用 常见的八大排序算法 直接插入排序 直接插入排序代码实现 直接插入排序算法时间复杂度及稳定性分析 希尔排序 希尔排序代码实现 希尔排序算法时间复杂度及稳定性 ...

  7. C语言八大排序算法【详细 代码+图文】

    这里写目录标题 1.冒泡排序 1.1 冒泡排序的思想 1.2 冒泡排序的实现 2.选择排序 2.1 选择排序的思想 2.2 选择排序的实现 3.直接插入排序 3.1 直接插入排序的思想 3.2 直接插 ...

  8. c语言顺序查找算法,c语言实现排序和查找所有算法

    c语言版排序查找完成,带详细解释,一下看到爽,能直接运行看效果. /* Note:Your choice is C IDE */ #include "stdio.h" #inclu ...

  9. 简单选择排序_一文带你读懂排序算法(一):冒泡 amp; 快速选择排序 amp; 简单插入排序算法...

    点击上方「蓝字」关注我们 排序是确保数据规则有序的有效手段.日常开发里,我们常用到的是"冒泡"."插入排序"."选择排序"三种.大部分情况下 ...

最新文章

  1. [UOJ422]小Z的礼物
  2. muduo之mutex和condition
  3. 创建MySQL数据库中useUnicode=truecharacterEncoding=UTF-8
  4. wpf 如何设置弹出窗口必须关闭才能打开其他软件_Mac忘记登录密码?以防万一,必须收藏。...
  5. python模仿windows文件管理_python – 在Windows中显示文件的资源管理器属性对话框...
  6. 漫谈 C++ 的各种检查
  7. 一步步使SSH连接您的github仓库
  8. vue中通过js控制页面样式方法
  9. python 除数总是提示为0_python负数求余不正确?——取模 VS 取余
  10. 查看grafana版本_使用 Prometheus 与 Grafana 为 Kubernetes 集群建立监控与警报机制
  11. 特斯拉加州工厂无视禁令强行复工,马斯克:要抓就只抓我
  12. 大数据之-Hadoop3.x_MapReduce_ReduceTask源码解析---大数据之hadoop3.x工作笔记0127
  13. 微单相机和单反相机的区别?摄影入门第一课
  14. DB2 windows下9.5安装教程
  15. 丁林松老师的QT视频及教程源码
  16. 【续】我的FLASH情结2010——浅谈FLASH WEB GAME与创业
  17. Internal error: : 8 [#1] PREEMPT SMP ARM,vmlinux反汇编命令调试查找错误的步骤
  18. 建议71:区分异步和多线程应用场景
  19. WUST2020部分WP
  20. c语言printf( aaa ),有大佬知道那里错了吗。aaa=jia();那报错了#incl

热门文章

  1. 基美|新型小体积电感器磁芯
  2. 集合--ArrayList类、Vector类、LinkedList类、List集合练习
  3. 专访 | 杨强教授谈CCAI、深度学习泡沫与人工智能入门
  4. 【软件测试】APP自动化测试面试题,含答案
  5. 华为OD机试 - 免单统计(Java JS Python)
  6. Day5:Java基础语法学习6.9
  7. 以下数据结构中,()是非线性数据结构
  8. excel解决计算机背包,不是专业做包,也有出彩地方——MAMMUT EXCELRON  LMNT 30L双肩包...
  9. 卸载完应用,无法删除残留文件
  10. MAC电脑SecureCRT配色方案