
概述10.1插入排序10.2快速排序10.3堆排序10.4归并排序10.5基数排序10.610.7各种排序方法的综合比较
10.1 概述 10.2 插入排序 10.3 快速排序 10.4 堆排序 10.5 归并排序 10.6 基数排序 10.7 各种排序方法的综合比较

概述10.1一、排序的定义二、 内部排序和外部排序三、内部排序方法的分类福
10.1 概 述 一、排序的定义 二、内部排序和外部排序 三、内部排序方法的分类

什么是排序?一、1排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”白的记录序列。例如:将下列关键字序列52,49,80,36,14.58.61.23,97.75调整为14.23.36,49.52.58.61.75.80.97
一、什么是排序? 排序是计算机内经常进行的一种操作, 其目的是将一组“无序”的记录序列调 整为“有序”的记录序列。 例如:将下列关键字序列 52, 49, 80, 36, 14, 58, 61, 23, 97, 75 调整为 14, 23, 36, 49, 52, 58, 61 ,75, 80, 97

一般情况下假设含n个记录的序列为R,R2·…:,R其相应的关键字序列为 Ki, K2, ... , Kn这些关键字相互之间可以进行比较,即在它们之间存在看这样一个关系:Kp≤Kp2≤...≤Kpn按此固有关系将上式记录序列重新排列为{Rp1, Rp2, ... , Rpn }的操作称作排序
一般情况下, 假设含n个记录的序列为{ R1 , R2 , ., Rn } 其相应的关键字序列为 { K1 , K2 , .,Kn } 这些关键字相互之间可以进行比较,即在 它们之间存在着这样一个关系 : Kp1≤Kp2≤.≤Kpn 按此固有关系将上式记录序列重新排列为 { Rp1, Rp2, .,Rpn } 的操作称作排序

二、内部排序和外部排序若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序;反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序
二、内部排序和外部排序 若整个排序过程不需要访问外存便 能完成,则称此类排序问题为内部排 序; 反之,若参加排序的记录数量很大, 整个序列的排序过程不可能在内存中 完成,则称此类排序问题为外部排序

三、[内部排序的方法内部排序的过程是一个遂步扩大记录的有序序列长度的过程。有序序列区无序序列区k;经过一排序有序序列区无序序列区
三、内部排序的方法 内部排序的过程是一个逐步扩大 记录的有序序列长度的过程。 经过一趟排序 有序序列区 无 序 序 列 区 有序序列区 无 序 序 列 区 ki

“扩大”基于不同的有序序列长度的方法,内部排序方法大致可分下列几种类型:插入类交换类选择类归并类
基于不同的“扩大” 有序序列长 度的方法,内部排序方法大致可分 下列几种类型: 插入类 交换类 选择类 归并类

待拥记象的数据类型定待排顺序表最大长度typedefintKeyType;//关键字类型为整数类型typedef struct //关键字项KeyType key;InfoTypeotherinfo;//其它数据项//记录类型RcdType;typedef struct r[MAXSIZE+1];//r[O]闲置RcdTypeint顺序表长度length;Ⅱ顺序表类型} SqList;
#define MAXSIZE 1000 待排记录的数据类型定义如下 // 待排顺序表最大长度 : typedef int KeyType; // 关键字类型为整数类型 typedef struct { KeyType key; // 关键字项 InfoType otherinfo; // 其它数据项 } RcdType; // 记录类型 typedef struct { RcdType r[MAXSIZE+1]; // r[0]闲置 int length; // 顺序表长度 } SqList; // 顺序表类型

1.插入类务将无序子序列中的一个或几个记录“插入“至到有序序列中,从而增加记录的有序子序列的长度
1. 插入类 将无序子序列中的一个或几 个记录“插入”到有序序列中, 从而增加记录的有序子序列的长 度

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