当前课程知识点:程序设计基础 > 第四章 筛法与查找 > 4.5 排序问题 > 4.5.4 运行演示
下面呢 我们可以把这两个
写成了函数的这个排序方法
写到同一个文件里
前面是这个插入排序
后面是选择排序
然后我们只需要在主函数当中
给它填写必要的初始化
然后为了看这个排序的效果呢
我们在排序之前
把这个数组的内容输出一下
排序之后把这个数组的内容输出一下
那首先看一下插入排序的情况
编译运行 我们看到
之前是一个没有顺序的内容
排序之后变成了一个有顺序的内容
再把这个调用的过程
换成调用选择排序
因为我们把它写在同一个文件里了
所以这个时候想调用哪一个都可以
因为都在这个调用的前面
编译运行 同样也能够看见
它原来是没有顺序的
之后变成了有顺序
可以看到我们这个运行结果
其实是一样的
他们想要完成的功能确实是一样的
所以得到的结果也都是
一个排过序的数组
那有了这两种方法
其实这两种方法相对还比较直观
但是我们如果简单做一点定性的分析
可以发现两个方法都涉及到了两重循环
所以呢 效率并不是特别高
实际上 为了解决排序
这样一个经常遇到的问题
陆陆续续发明了排序方法不下30种
以后有机会呢
我们会再进行讲解其他的方法
那么这里提一种
同学们可以在课下去尝试一下
就是刚才我们在讲插入排序的过程当中
我们有一个过程 是要找一张牌
应该插在什么位置
当时我们怎么做的呢
我们是让它从后往前
一张一张的往前找
然后看我们插到什么位置
看它是不是比前面的后面一张牌要大
如果一旦不比后面这张牌要大了
实际上就找到了一个要插入的位置
再进行插入
实际上我们体会一下
这个是一个线性查找的过程
但是我们看 其实我们前面这一部分
代表手中的牌这一部分的数组
其实是有顺序的
所以呢 咱们前面提到过
一旦是有顺序的
我的查找是可以不用线性查找
这么没有效率的方法
可以用一个折半查找的方法
那如果把这一部分的插入
这个查找要插入的位置这一部分
换成一个折半查找的方法
实际上就变成了一个我们叫
折半插入排序的一个方法
这样呢 效率会更高
同学们可以下来试一下
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测