第4章程序设计基础(免费阅读).pptVIP

  • 6
  • 0
  • 约1.02万字
  • 约 72页
  • 2016-12-23 发布于重庆
  • 举报
查找的方法主要有顺序查找、二分查找、分块查找、数表的动态查找(二叉排序树查找、平衡二叉树AVL树、B树、B+树)、哈希查找等。 1. 顺序查找 顺序查找是在一个顺序表中找出与给定关键字相同数值的具体位置。原理是让关键字与顺序表中的数从第一个开始逐个比较,直到找出与给定关键字相同的数值为止。 4.3.3 查找 2.二分查找 二分查找又称折半查找,它是一种效率较高的查找方法。但二分查找必须采用顺序存储结构,且必须按关键字大小有序对给定队列进行排列。 二分查找算法的思想是:将表中间位置记录的关键字与查找关键字进行比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字小于查找关键字,则进一步查找前一子表(假定队列是从小到大排列),否则进一步查找后一子表。重复以上过程,直至找到满足条件的记录,使查找成功,或直至子表不存在为止,此时查找失败。 4.3.3 查找 优、缺点:二分查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入、删除困难。因此,二分查找方法适用于不经常变动而查找频繁的有序列表。 4.3.3 查找 3.分块查找 分块查找又称索引顺序查找,它是顺序查找的一种改进方法。 分块的原则是将n个数据元素“按块有序”划分为m块(m ≤ n)。每一块中的结点不必有序,但块间必须“按块有序”;即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2块中任一元素又都必须小于第3块中的任一元素。 分块查找是首先选取各块中的最大关键字构成一个索引表;然后查找分两个部分:先对索引表进行二分查找或已确定待查记录在哪一块中;最后在已确定的块中用顺序法进行查找。 4.3.3 查找 4.3.4 排序 排序是计算机程序设计中的一种重要操作。简单地说,排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。 排序的方法很多,但就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优、缺点,适合在不同的环境(如记录的初始排列状态等)中使用。如果按排序过程中依据的不同原则对内部排序方法进行分类,则可分为直接插入排序、冒泡排序、快速排序等。 1.直接插入排序 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 4.3.4 排序 2.冒泡排序 冒泡排序是通过交换两个元素实现的,它的思想是:设有数组A[n+1](n为序列中元素个数),第一趟在序列(A[0]-A[n-1])中从前往后进行两个元素的比较,如后者小,则交换,比较n-1次;第一趟排序结束,最大元素被交换到A[n-1]中(即沉底),下一趟排序只要在子序列(A[]-A[n-2])中进行;如果在某一趟排序中未交换元素,说明子序列已经有序,则不再进行下一趟排序。 4.3.4 排序 3.快速排序 快速排序的基本思想是:对任意给定的系列中存在元素R,经过一趟排序后,将原序列分割成两个子序列(Rp(0), Rp(1), …,Rp(s-1))和(Rp(s+1), Rp(s+2), …,Rp(n-1)),其中前一个子序列中的所有元素的关键字均小于或等于该元素的关键字值Kp(s),后一个子序列中元素的关键字均大于或等于Kp(s)。称该元素R=Rp(s)为分割元素,子序列(Rp(0), Rp(1), …,Rp(s-1))为其低端系列,(Rp(s+1), Rp(s+2), …,Rp(n-1))为其高端序列;很明显,以后只需要对低端和高端分别进行快速排序,直到子序列为空或只有一个元素时结束,最后得到有序序列。 4.3.4 排序 4.5 本章小结 在数据结构部分,介绍了程序设计中常用的几种数据结构,如线性表、栈、队列、树、图等。本章旨在介绍程序设计的基本原理和基本方法,更加详细和深奥的内容将在计算机专业的后续课程中陆续涉及。 计算该方程的根的源程序如下: #includemath.h main() { float a,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f”,a,b,c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(“\nx1=%5.2f\nx2=%5.2f\n”,x1,x2); } 4.2.5 程序设计举例 4.3 基本数据结构 数据结构(Data Structure)是系统设计和程序开发的重要基础。 4.3.1 基本概念 1.数据、数据类型 数据是对客观事物的符号表示。 数据

文档评论(0)

1亿VIP精品文档

相关文档