C++数值查找优化与冒泡排序分析

需积分: 9 0 下载量 135 浏览量 更新于2024-08-05 收藏 788KB PPTX 举报
本资源是一份关于C++数值查找的提高练习文档,包含了多个选择题和一个简单的C++程序。主要知识点包括: 1. 冒泡排序算法:题目(1)考察了冒泡排序的特性,冒泡排序通过比较相邻元素并交换它们来排序。在序列5, 4, 3, 2, 1中,每一轮循环都会将当前未排序部分的最大值交换到正确位置,这个过程会持续到没有更多的交换需要,即序列已经完全有序。由于初始序列已经逆序,需要进行5轮比较,每轮最多交换一次,所以总共需要执行5次操作。 2. 二分查找复杂度:问题(2)涉及二分查找的最坏情况分析。二分查找适用于有序数组,每次查找都将搜索范围缩小一半。对于100个元素的数组,最坏情况下,可能需要一直找到中间位置,直到找到或超出范围。因此,当目标值位于数组末尾时,需要比较7次(最高次数),答案是B(7次)。 3. 排序算法优化:题目(3)讨论的是将数组按从大到小排序的最小交换次数。这个问题可以通过观察数组的特点来解答,首先将最大的元素放在最后,然后逐次找到剩余元素中的最大值与已排序部分的最后一个元素交换,直到所有元素都排好。在这个例子中,需要将77、100这两个最大的元素放到正确位置,共需要交换2次,答案是A(4次),但题目描述中给出的是最少需要交换次数,实际操作中为2次。 4. 二分查找查找长度:在问题(4)中,数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,目标元素为19。由于19在数组中存在,二分查找会在第一次就定位到该元素,所以查找长度(即比较次数)为1,答案是A(1次)。 此外,还提供了一个C++程序,用于统计输入的一组数字出现的频率,并按照出现次数从大到小打印。程序使用了`memset`函数初始化计数数组`c[]`,通过两层循环遍历输入数组,计算每个数字出现的次数,最后输出数组`array[]`。这展示了基本的C++编程技巧,包括输入处理、数组操作和循环控制。