C++课件 第11章_查找与排序.pptVIP

  • 3
  • 0
  • 约5.06千字
  • 约 39页
  • 2017-05-21 发布于河南
  • 举报
C课件第11章_查找与排序

? 二分插入排序的函数示例: 4. 直接选择排序 例如: 初始状态 〔2 2 7 4 3 1〕 第1趟(i=0) 1 〔 2 7 4 3 2〕 第2趟(i=1) 1 2〔 7 4 3 2〕 第3趟(i=2) 1 2 2 〔4 3 7〕 第4趟(i=3) 1 2 2 3 〔4 7〕 第5趟(i=4) 1 2 2 3 4 〔7〕 直接选择排序算法是不稳定算法 时间复杂度与元素的初态无关 平均时间复杂度为O(n2) 直接选择排序函数模版 〔2 2 7 4 3 1〕 76 65 49 13 58 27 97 待排序记录 LastExchangeIndex 76 65 49 13 58 97 27 76 65 49 13 97 58 27 76 65 49 97 13 58 27 76 65 97 49 13 58 27 76 97 65 49 13 58 27 97 76 65 49 13 58 27 第一趟排序结束 97 76 65 49 13 58 27 待排序记录 已排序记录 5.冒泡排序(交换排序) 97 76 65 49 13 58 27 待排序记录 97 76 65 49 13 58 27 97 76 65 49 58 13 27 97 76 65 58 49 13 27 97 76 65 58 49 13 27 97 76 65 58 49 13 27 第二趟排序结束 97 76 65 58 49 13 27 待排序记录 已排序记录 LastExchangeIndex 第三趟排序结束 97 76 65 58 49 13 27 待排序记录 已排序记录 LastExchangeIndex 97 76 65 58 49 27 13 97 76 65 58 49 27 13 冒泡排序函数: ? 算法分析: 时间复杂度与元素的初态有关 最好情形(正序)的时间复杂度为O(n) 最坏情形(逆序)的时间复杂度为O(n2) 平均时间复杂度为O(n2) 冒泡排序算法是稳定的 第1步:在n个数据元素中找出排序码最小的数据元素,与第1个元素交换 第2步:在n-1个数据元素中找出排序码最小的数据元素,与第2个元素交换 第i步:在n-i+1个数据元素中找出排序码最小的数据元素,与第i个元素交换 第n-1步:在2个数据元素中找出排序码最小的数据元素,与第n-1个元素交换 * 第十一章 查找和排序 本章主要内容 查找: 顺序查找 二分查找 哈希查找 平均查找长度的计算 排序 直接插入排序 直接选择排序 冒泡排序 基本要求:熟练掌握顺序查找、二分查找算法;掌握哈希查找;了解平均查找长度的计算。 熟练掌握直接插入排序、直接选择排序;了解冒泡排序。 本章主要内容 查找: 顺序查找 二分查找 二叉排序树查找 哈希查找 平均查找长度的计算 排序 直接插入排序 直接选择排序 冒泡排序 基本要求:熟练掌握顺序查找、二分查找算法;掌握二叉排序树的建立和查找过程,哈希查找;了解平均查找长度的计算。 熟练掌握直接插入排序、直接选择排序;了解冒泡排序。 11.1 查找 1. 查找概述 ? 查找:在数据元素集合(查找表)中查找关键字与给定值相等的数据元素。 ? 关键字:数据元素中的一个或多个数据项值,它可以惟一标识一个数据元素。 n为查找表的长度; pi为查找第i个元素的概率,在等概率情况下pi等于1/n; Ci为找到第i个元素时的比较次数 ?平均查找长度(ASL): 2. 顺序查找 ? 要求: 查找表必须是线性表。 ? 算法实现: 顺序表类和单链表类中的search函数。 ? 基本思想: ? 顺序查找的平均查找长度 ? 评价:简单但效率较低。适用于在查找表较小的情况下进行查找。 ? 实现一:顺序表类中实现顺序查找的成员函数 ? 实现二:单链表类中实现顺序查找的成员函数 3. 二分查找(折半查找) 实现二分查找的条件 必须以顺序方式存储线性表; 线性表中所有数据元素必须按照关键字有序排列 high low low high low high 查找成功的例子 low=0 high=8 mid=[(0+8)/2]=4 4A[mid] low=0 high=3 mid=[(0+3)/2]=1 4A[mid] low mid high low mid high 查找:key=4 low=2 high=3 mid=[(

文档评论(0)

1亿VIP精品文档

相关文档