数据结构排序.pdf

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

第八章 排序(参考答案)

本章所用数据结构

#define N 待排序记录的个数

typedef struct

{ int key;

ElemType other;

}rectype;

rectype r[n+1]; // r 为结构体数组

8.2 稳定排序有:直接插入排序、起泡排序、归并排序、基数排序 不稳定排序有:希尔排序、直接选择排序、堆排序 希尔排序例: 49 ,38, 49 ,90 , 70 ,25 直接选择排序例: 2, 2 , 1 堆排序例: 1,2 ,2

8.3

void StlinkedInsertSort(s , n);

// 对静态链表 s[1..n] 进行表插入排序, 并调整结果,使表物理上排序

{ #define MAXINT 机器最大整数

typedef struct

{ int key; int next;

}rec;

rec s[n+1]; // s 为结构体数组

s[0].key=maxint; s[1].next=0; // 头结点和第一个记录组成循环链表

i=2; // 从第 2 个元素开始,依次插入有序链表中

while (i<=n)

{q=0; p=s[0].next; // p 指向当前最小元素, q 是 p 的前驱 while (p!=0 && s[p].key<s[i].key) // 查找插入位置 { q=p; p=s[p].next; } s[i].next=p; s[q].next=i; // 将第个元素链入 i++ ; } // while(i<=n) 静态链表的插入

// 以下是重排静态链表,使之物理有序 i=1; p=s[0].next; while (i<=n) {WHILE (p<i) p=s[p].next; q=s[p].next; if (i!=p) { s[

最近下载