InsertionSort_插入排序
来源:互联网 发布:java雷霆战机开发视频 编辑:程序博客网 时间:2024/06/04 16:37
- 关键码:数据元素中某个数据项的值;
- 例如,学生信息中的学号即为主关键码
- 若在待排序的纪录中,存在两个或两个以上的关键码值相等的纪录,经排序后这些记录的相对次序仍然保持不变,则称相应的排序方法是稳定的方法,否则是不稳定的方法。
-内部排序和外部排序
- 根据排序过程中涉及的存储器不同:
- 内部排序:待排序数据主要存储在随机存储器(内存)
- 外部排序,指的是排序中要对外存储器进行访问的排序过程
-直接插入排序
(从第二个开始,每一个元素分别与其前面的所有元素挨个比较,如果比其小就前移一位知道)
- 算法思路:
(1) 设置监视哨r[0],将待插入纪录的值赋值给r[0];
(2) 设置开始查找的位置j;
(3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;
(4) 将r[0]插入r[j+1]的位置上。
public void zjinsert (Redtype r[],int n){int I,j;Redtype temp;for (i=1;i<n;i++){temp = r[i];j=i-1;while (j>-1 &&temp.key<r[j].key){r[j+1]=r[j];j--;}r[j+1]=temp;}}
-折半插入排序(二分插入排序)
- 基本过程:
(1)计算 0 ~ i-1 的中间点,用 i 索引处的元素与中间值进行比较,如果 i 索引处的元素大,说明要插入的这个元素应该在中间值和刚加入i索引之间,反之,就是在刚开始的位置 到中间值的位置,这样很简单的完成了折半;
(2)在相应的半个范围里面找插入的位置时,不断的用(1)步骤缩小范围,不停的折半,范围依次缩小为 1/2 1/4 1/8 …….快速的确定出第 i 个元素要插在什么地方;
(3)确定位置之后,将整个序列后移,并将元素插入到相应位置。
阅读全文
0 0
- InsertionSort_插入排序
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- Android Fragment 真正的完全解析(下)
- android阿里面试题锦集
- memcached--安装
- OpenCV自学笔记17. 基于SVM和神经网络的车牌识别(一)
- java学习总结之jdbc连接Oracle数据库
- InsertionSort_插入排序
- Corn Fields
- WEB前端听课笔记——HTML之表单
- 1042. Shuffling Machine (20)
- Android Fragment 你应该知道的一切
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- C++ 文件和流
- [Hive]HiveServer2配置
- ZOJ-3469 Food Delivery