第2讲 排序与查找算法和实例分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
排序与查找算法和实例分析



选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
选择排序

选择排序基本思想
对于待排的N个数据,在其中寻找最大(或最小)的数值,并 将其移动到的最前面作为其第一个数据;在剩下的N-1个数 据中用相同的方法寻找最大(或最小)的数值,并将其作为第 二个数据;以此类推,直到将整个待排数据集合处理完为止 (只剩下一个待处理数据)。选择排序的基本方法是:
顺序查找

顺序查找的基本思想
从表中的第一个(或最后一个)记录开始,逐个进行记录的关 键字与给定查找值比较,若两个值相等,则查找成功。

顺序查找示例分析
编程序实现功能:用N个两位随机整型数据填充一个整型数 组,并在其中查找从键盘输入的指定数据。 思路和步骤 定义数组(长度N+1) 使用随机数填充数组的1到N号单元 调用查找函数实现查找 输出查找结果信息 0205

选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
典型示例分析

谁是中间的那一个
一个奶牛场有若干奶牛,请编程序 求出产奶量居中的那头奶牛的产奶 量。 输入 仅包含一组测试数据,第一行 一个正整数N(1≤N≤10000); 接着每行输入一个正整数表示 产奶量,第i+1行表示第i头牛 的产奶量。 输出 产奶量居中的奶牛的产奶量。

选择排序示例分析
编程序实现功能:将一个(英文)文本文件中的所有单词按升 序排序后输出。 思路和步骤 单词个数的统计 单词的读出和排序数组的构造 排序 输出 0202
排序与查找算法和实例分析



选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
样例输入 5 efghijk defghij cdefghi bcdefgh abcdefg 样例输出 abcdefg bcdefgh cdefghi defghij efghijk
排序与查找算法和实例分析



选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
样例输入 5 7 121 123 7 121 ### 4 3 3 2 5 样例输出 121 121 7 123

选择排序示例分析
编程序实现功能:将一个(英文)文本文件中的所有单词按升 序排序后输出。 思路和步骤 单词个数的统计 单词的读出和排序数组的构造 排序 输出 0201
排序与查找算法和实例分析



选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
插入排序

插入排序的基本思想



将待处理的数据分为两个序列:已排好序列和待排序列。 初始时,已排好序列中只含一个数据,其余数据构成待排 序序列。 每次将一个待排序数据,按其关键字的大小和排序要求插 入到已排好序列中的适当位置。 反复进行第二步操作,直到所有数据全部插入到已排好序 列中为止。
插入排序
样例输入 5 1 2 4 5 3 样例输出 3 0207 0207a
典型示例分析

一问一答
现在输入一个数字序列,这个序列中有N 个数字,输入时他们是无序的,而后他们 会被写入到数据库Biblioteka Baidu。在数据库中,它们 将被按照升序排列,当有人在外部向数据 库输入一个数字n时,数据库会返回当中 第n小的数。


输入 包括两个部分,第一部分为数据输入部分:第一 行为一个正整数N,表示数据库中数据的个数;接 下来每行输入一个数据,最后输入3个#表示输入 数据过程结束。第二部分是询问部分:第一行为 一个正整数k,表示要询问k次;接下来每行输入 一个数据ki,表示要询问第ki小的数。 输出 0208 对每个询问输出一行,表示第ki小的数。
公司文员小文面对一堆杂乱无章的英文字符串 (字符串个数<500,每个字符串的长度<500), 老板要求小文将这些字符串整理成为按升序排 列的文档,现请你帮助小文完成工作。 输入:第一行输入一个整数n表示字符串的 个数,接下来的n行依次输入需要处理的字 符串。 输入:输出数据为n行,显示已经排好序的 字符串数据。 方法一:使用二维字符数组。 0204 方法二:使用字符指针数组。 0204a
快速排序标准函数qsort使用方法

qsort函数简介
void qsort( void *base,size_t num,size_t width, int(__cdecl *compare)(const void *elem1,const void *elem2));



base: Start of target array num: Array size in elements width: Element size in bytes compare: Comparison function elem1: Pointer to the key for the search elem2: Pointer to the array element to be compared with the key

Function: The qsort function implements a quicksort algorithm to sort an array of num elements, each of width bytes. 0203
快速排序标准函数qsort使用方法

qsort函数应用示例
排序与查找算法和实例分析



选择排序 插入排序 快速排序标准函数qsort使用方法 顺序查找 折半查找 典型示例分析
折半查找

折半查找的基本思想

要求查找集合a是有序集合(一般考虑为升序); 将查找集合划分为数据个数大致相同的两半; 取a[n/2]与查找关键字key比较: 若key=a[n/2],则找到,算法结束; 若key<a[n/2],则在a的前半部分继续搜索; 若key>a[n/2],则在a的后半部分继续搜索;
(1)在所有的记录中选取关键字值最大(或最小)的记录,并将其与第一 个记录交换位置。 (2)将上次操作完成后剩下的记录中构成一个新处理数据集。 (3)在新处理数据集的所有记录中选取关键字值最大(或最小)的记录, 并将其与新处理数据集中第一个记录交换位置。 (4)如果还有待处理记录,转到(2)。
选择排序
折半查找

折半查找示例分析
编程序实现功能:用N个两位随机整型数据填充一个整型数 组,并在其中查找从键盘输入的指定数据。 思路和步骤 定义数组(长度N) 使用随机数填充数组 对查找集合排序(升序) 调用查找函数实现查找 输出查找结果信息 0206
排序与查找算法和实例分析


相关文档
最新文档