为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数据结构各种算法比较之类

2010-10-30 7页 doc 35KB 13阅读

用户头像

is_489920

暂无简介

举报
数据结构各种算法比较之类数据结构-排序: 各种排序算法全分析 数据结构-排序: 各种排序算法全分析 排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 1、插入排序(直接插入排序、折半插入排序、希尔排序); 2、交换排序(起泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、基数排序; 学习重点...
数据结构各种算法比较之类
数据结构-排序: 各种排序算法全 数据结构-排序: 各种排序算法全分析 排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 1、插入排序(直接插入排序、折半插入排序、希尔排序); 2、交换排序(起泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、基数排序; 学习重点 1、掌握排序的基本概念和各种排序方法的特点,并能加以灵活应用; 2、掌握插入排序(直接插入排序、折半插入排序、希尔排序)、交换排序(起泡排序、快速排序)、选择排序(直接选择排序、堆排序)、二路归并排序的方法及其性能分析方法; 3、了解基数排序方法及其性能分析方法。 排序(sort)或分类      所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:   输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。   输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。 1.被排序对象--文件   被排序的对象--文件由一组记录组成。   记录则由若干个数据项(或域)组成。其中有一项可用来标识一个记录,称为关键字项。该数据项的值称为关键字(Key)。   注意:      在不易产生混淆时,将关键字项简称为关键字。 2.排序运算的依据--关键字      用来作排序运算依据的关键字,可以是数字类型,也可以是字符类型。      关键字的选取应根据问的要求而定。 【例】在成绩统计中将每个考生作为一个记录。每条记录包含准考证号、姓名、各科的分数和总分数等项内容。若要惟一地标识一个考生的记录,则必须用"准考证号"作为关键字。若要按照考生的总分数排名次,则需用"总分数"作为关键字。 排序的稳定性      当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一。      在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。   注意:      排序算法的稳定性是针对所有输入实例而言的。即在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的。 排序方法的分类 1.按是否涉及数据的内、外存交换分      在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内部排序(简称内排序);反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序。   注意:      ① 内排序适用于记录个数不很多的小文件      ② 外排序则适用于记录个数太多,不能一次将其全部记录放人内存的大文件。 2.按策略划分内部排序方法      可以分为五类:插入排序、选择排序、交换排序、归并排序和分配排序。 排序算法分析 1.排序算法的基本操作      大多数排序算法都有两个基本的操作:   (1) 比较两个关键字的大小;   (2) 改变指向记录的指针或移动记录本身。   注意:      第(2)种基本操作的实现依赖于待排序记录的存储方式。 2.待排文件的常用存储方式 (1) 以顺序表(或直接用向量)作为存储结构     排序过程:对记录本身进行物理重排(即通过关键字之间的比较判定,将记录移到合适的位置) (2) 以链表作为存储结构   排序过程:无须移动记录,仅需修改指针。通常将这类排序称为链表(或链式)排序; (3) 用顺序的方式存储待排序的记录,但同时建立一个辅助表(如包括关键字和指向记录位置的指针组成的索引表)   排序过程:只需对辅助表的表目进行物理重排(即只移动辅助表的表目,而不移动记录本身)。适用于难于在链表上实现,仍需避免排序过程中移动记录的排序方法。 3.排序算法性能评价 (1) 评价排序算法好坏的   评价排序算法好坏的标准主要有两条:      ① 执行时间和所需的辅助空间      ② 算法本身的复杂程度 (2) 排序算法的空间复杂度   若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间是O(1),则称之为就地排序(In-PlaceSou)。   非就地排序一般要求的辅助空间为O(n)。 (3) 排序算法的时间开销   大多数排序算法的时间开销主要是关键字之间的比较和记录的移动。有的排序算法其执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态。 文件的顺序存储结构表示   #define n l00 //假设的文件长度,即待排序的记录数目   typedef int KeyType; //假设的关键字类型   typedef struct{ //记录类型     KeyType key; //关键字项     InfoType otherinfo;//其它数据项,类型InfoType依赖于具体应用而定义    }RecType;   typedef RecType SeqList[n+1];//SeqList为顺序表类型,表中第0个单元一般用作哨兵   注意:      若关键字类型没有比较算符,则可事先定义宏或函数来表示比较运算。 【例】关键字为字符串时,可定义宏"#define LT(a,b)(Stromp((a),(b))<0)"。那么算法中"a
/
本文档为【数据结构各种算法比较之类】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索