排序
# 6. 分配类排序 1. 多关键字排序 两个关键字的优先级,先分高级的叫 “高位优先” 排序法,先分低级的叫 “低位优先” 排序法 2. 链式基数排序 排序时先按最低位的值对记录进行初步排序,在此基础上再按次低位的值进行进一步排序。依此类推,由低位到高位,每一趟都是在前一趟的基础上,根据关键字的某一位对所有记录进行排序,直至最高位,这样就完成了基数排序的全过程。 // 理解就好不用硬看#define RADIX 10#define KEY_SIZE 6#define LIST_SIZE 20typedef int KeyType;typedef struct {...
more...排序方法的综合比较
# 7. 排序方法的综合比较 1. 各种排序方法的性能比较 排序方法 平均时间复杂度 最坏时间复杂度 辅助存储空间 简单排序法 O(n2) O(n2) O(1) 快速排序 O(nlog2n) O(n2) O(nlog2n) 堆排序 O(nlog2n) O(nlog2n) O(1) 归并排序 O(nlog2n) O(nlog2n) O(n) 基数排序 O(d(n+rd)) O(d(n+rd)) O(rd) 2. 各种排序方法的稳定性比较 排序方法 稳定性 反例 直接插入排序 是 冒泡排序 是 简单选择排序 否 (3,3*,2) 希尔排序 否 (2,4,1,2*)...
more...插入排序
# 2. 插入排序 基本思想:将一个元素记录按其应用的位置插入 到已排好序的序列中。依据寻找插入位置的方法不同,插入排序分为: 直接插入排序;折半插入排序;希尔插入排序;表插入排序。 # 1. 直接插入排序 基本思想: 插入 Ri 时,R1,R2,…,Ri-1 已排好,用 Ri 的关键字与 Ri-1,Ri-2,…,R1 比较,找到插入位置。即把一个记录插入到已排好序的有序表中。 /* 对记录数组 r 做直接插入排序,length 为数组中待排序记录的数目 */void InsSort(RecordType r[], int length){ for ( i=2 ;...
more...归并排序
# 5. 归并排序 基本思想 1)把 n 个记录看成 n 个长度为 l 的有序子表; 2)进行两两归并使记录关键字有序,得到[n/2]个长度为 2 的有序子表; 3)重复第(2)步,直到所有记录归并成一个长度为 n 的有序表为止。 // 相邻两个有序子序列的合并成算法/* 已知 r1 [low..mid] 和 r1 [mid+1..high] 分别按关键字有序排列,将它们合并成一个有序序列,存放在 r2 [low..high] */void Merge ( RecordType r1[], int low, int mid, int high, RecordType...
more...Linux磁盘管理
# 7.Linux 磁盘管理 # 1.Linux 物理设备介绍 1.1 一切从 “/” 开始 在 Linux 系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,既然平时我们打交道的都是文件,那么又应该如何找到它们呢? 在 Linux 系统中并不存在 C/D/E/F 等盘符,Linux 系统中的一切文件都是从 “根( / )” 目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。 另外,Linux 系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT 均代表不同的目录,并且文件名称中不得包含斜杠( /...
more...