10.1 内部排序

  • 排序
    将一个 数据元素(或记录)的 任意 序列,重新排列成一个按关键字有序的序列。

  • 排序的分类
    1、内部排序
    2、外部排序

  • 内部排序
    待排序记录存放在 计算机随机存储器(内存) 中进行的排序过程,整个排序过程不需要访问外存便能完成。
    内部排序 是外部排序的 基础,本章介绍内部排序。

  • 外部排序
    待排序记录的数量很大,整个序列的排序过程不可能只在内存中完成,在排序过程中仍然需要对外存进行访问的排序过程。

内部排序

  • 内部排序过程是一个逐步扩大记录的有序序列长度的过程,
    整个序列 变成两个部分,无序区有序区 ,排序过程中有序区逐渐扩大至整个序列
    不同的排序方法 其实就是不同的 扩大记录有序序列长度的方法
    如下图:
    在这里插入图片描述
    一趟排序:将 无序序列区中一个或者若干个记录 转换到 有序区 中去。

  • 排序的两种基本操作
    1、比较两个关键字的大小
    2、将记录从一个位置移动到另一个位置

  • 逐步扩大记录有序序列长度的方法有下面几类:
    1、插入类
    2、交换类
    3、选择类
    4、归并类
    5、其它

  • 1、插入类
    无序子序列中的一个或几个记录 插入有序序列 中,从而增加记录的有序子序列的长度。

  • 2、交换类
    通过交换 无序序列中的记录 从而得到 其中关键字最小或者最大的记录,并将它加入到 有序子序列 中,依此方法增加记录的有序子序列的长度。

  • 3、选择类
    从记录的 无序子序列中 选择 关键字最小或最大的记录 ,并将它加入到有序子序列中,依此方法增加记录的有序子序列的长度。(基本操作是选择)

  • 4、归并类
    通过归并 两个或两个以上的记录有序子序列 ,逐步增加记录有序序列的长度。

  • 实现一趟插入排序可分为如下三步:
    1、在 R[ 1 … i-1 ] 中查找 R[i] 的插入位置;要满足 R[1 … j] <= R[i] <= R[j+1 … i-1]。
    2、将 R[j+1 … i-1] 中的所有记录均后移一个位置。
    3、将 R[i] 复制到 R[j+1] 的位置上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值