直接插入排序(简单插入排序)

  给定一个数字串:2 6 7 8 9 3 2 3 4

  按从小到大的顺序排列输出

  首先把第一个数字放到一个小组里:(2)6 7 8 9 3 2 3 4

  让后从第二个数字开始往小组里插入

  比如第二个数字6,比2大,随意直接不动放在5后面就可以:(2 6) 7 8 9 3 2 3 4

  7 8 9同样:(2 6 7 8 9) 3 2 3 4

  数字 3 与小组里的数字比较(从右往左),比 3 大的全部往右移动一格

  移动后:2 ()6 7 8 9 2 3 4

  原来的数字 3 被覆盖 , 再填入上一行的括号中就好

  2 3 6 7 8 9 2 3 4

  (2 3 6 7 8 9 )2 3 4继续比较入小组。。。

特殊说明:

我们建立一个数组array[11],一般数据区域为【1,10】闭区间

因为我们可以把替换是用的中间变量设置位array[0],这样就不用再创建一个变量了(下文有实例)

代码如下:

#include<stdio.h>

typedef int keytype;
//简单插入排序
void insertsort(keytype k[] , int n)
{
int j;
for (size_t i =2 ; i <= n; i++)
{
k[0] = k[i];//k[0]为中间变量用来储存k[i]
j = i-1;
while (j>0 && k[j] > k[0])//组外元素与组内元素逐一比较
{
k[j+1] = k[j--];//组外元素比组内的这个元素小,组内的这个元素就后退一格
}
k[j+1] = k[0];//在这个位置,前面比自己小,后面比自己大,刚刚好落户,哈哈
}
}
#define MAX 100
int main()
{
int c;
int i = 1;
int k[MAX];
//读取一个数字串
printf("请输入一串无序数字:");
while ((c = getchar())!='\n')
{
k[i++] = c-'0';
}
if (c=='\n')
{
k[i] = '\0';
}
//排序并打印排序结果
insertsort(k,i-1);
printf("这串数字从小到大为:");
for (size_t count = 1; count <= i-1; count++)
{
printf("%d",k[count]);
}
return 0;
}

  

运行结果:

数据结构C语言实现----直接插入排序的更多相关文章

  1. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  2. 数据结构(C语言)—排序

    数据结构(C语言)—排序 排序 排序是按关键字的非递增或递减顺序对一组记录中心进行排序的操作.(将一组杂乱无章的数据按一定规律顺次排列起来.) 未定列表与不稳定列表 假设 Ki = Kj ( 1 ≤ ...

  3. Hark的数据结构与算法练习之插入排序

    算法说明: 先是拿语言进行一下描述: 假如是做降序排序,那么从头开始扫描每个数字,使每个数字与它前面的若干数字进行比较,直接找到小于当前数字a(当前数字以a代替)的数字b(小于a的数字以b代替). 然 ...

  4. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  5. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  6. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...

  7. Python语言数据结构和语言结构(2)

    目录 1. Python预备基础 2. Python数据类型 3. Python条件语句 4. while循环和for循环 1. Python预备基础 1.1 变量的命名   变量命名规则主要有以下几 ...

  8. c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...

  9. 图的存储结构大赏------数据结构C语言(图)

    图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无 ...

随机推荐

  1. 每日一题 - 剑指 Offer 36. 二叉搜索树与双向链表

    题目信息 时间: 2019-06-29 题目链接:Leetcode tag: 二叉搜索树 中序遍历 递归 深度优先搜索 难易程度:中等 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循 ...

  2. Python优秀开源项目Rich源码解析

    这篇文章对优秀的开源项目Rich的源码进行解析,OMG,盘他.为什么建议阅读源码,有两个原因,第一,单纯学语言很难在实践中灵活应用,通过阅读源码可以看到每个知识点的运用场景,印象会更深,以后写代码的时 ...

  3. 数据库基础02-MYSQL的事务

    Mysql的事务 1.基本概念      事务本质是一组SQL操作,事务中的语句要么全部执行成功,或者全部执行失败. 2.如何保证一个事务:四个特性(ACID) 原子性 (Automic)       ...

  4. MyBatis源码分析(一)

    MyBatis故事: 官方网站:http://www.mybatis.org 官方文档:http://www.mybatis.org/mybatis-3/ GitHub:https://github. ...

  5. day25 ATM项目(第一天)

    项目的说明书 项目:ATM + 购物车 项目需求: 1.额度15000或自定义 --> 注册功能 2.实现购物商城,买东西加入购物车,调用信用卡接口结账 --> 购物功能.支付功能 3.可 ...

  6. mysql 漏洞利用与提权

    判断MySQL服务运行的权限 1.查看系统账号,如果出现MySQL这类用户,意味着系统可能出现了降权. 2.看mysqld运行的priority值. 3.查看端口是否可外联. MySQL密码获取与破解 ...

  7. MYSQL 之 JDBC(十三):处理事务

    所谓事务是指:一组逻辑操作单元,使数据从一种状态变换到另一种状态. 事务的ACID属性 原子性,Atomicity:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. 一致性,Con ...

  8. 数据可视化之powerBI技巧(七)从Excel到PowerBI,生成笛卡尔积的几种方式

    假如分别有100个不重复的姓和名,把每个姓和名进行组合匹配,就可以得到一万个不重复的姓名组合,这种完全匹配的方式就是生成一个姓名的笛卡尔积. 下面就来看看生成笛卡尔积的几种方式,为了展现的方便,以5个 ...

  9. Django之 admin组件

    本节内容 路由系统 models模型 admin  views视图 template模板 Django Admin介绍 admin 是django 自带的用来让你进行数据库管理的web app. 提供 ...

  10. 数据可视化实例(十二): 发散型条形图 (matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter10/chapter10 如果您想根据单个指标查看项目的变化情况,并可视化此差异的顺序和数量,那么散型条 ...