2021年6月17日

数组的查找--二分查找

摘要: 二分查找也是一种在数组中查找数据的算法。和线性查找不同,它只能查找已经排好序的数据。二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边。因此,比较一次就可以把查找范围缩小一半。重复执行该操作就可以找到目标数据,或得出目标数据不存在的结论。 解说 二分查找利用已排好 阅读全文

posted @ 2021-06-17 20:28 胡子就不刮 阅读(290) 评论(0) 推荐(0) 编辑

数组的查找--线性查找

摘要: 线性查找是一种在数组中查找数据的算法。与二分查找不同,即便数据没有按顺序存储,也可以应用线性查找。线性查找的操作很简单,只要在数组中从头开始依次往下查找即可。虽然存储的数据类型没有限制,但为了便于理解,这里我们假设存储的是整数。 解说 线性查找需要从头开始不断地按顺序检查数据,因此在数据量大且目标数 阅读全文

posted @ 2021-06-17 20:24 胡子就不刮 阅读(129) 评论(0) 推荐(0) 编辑

排序--快速排序

摘要: 快速排序算法首先会在序列中随机选择一个基准值(pivot),然后将除了基准值以外的数分为“比基准值小的数”和“比基准值大的数”这两个类别,再将其排列成以下形式。 [ 比基准值小的数 ] 基准值 [ 比基准值大的数 ] 接着,对两个“[ ]”中的数据进行排序之后,整体的排序便完成了。对“[ ]”里面的 阅读全文

posted @ 2021-06-17 20:19 胡子就不刮 阅读(123) 评论(0) 推荐(0) 编辑

排序--归并排序

摘要: 归并排序算法会把序列分成长度相同的两个子序列,当无法继续往下分时(也就是每个子序列中只有一个数据时),就对子序列进行归并。归并指的是把两个排好序的子序列合并成一个有序序列。该操作会一直重复执行,直到所有子序列都归并为一个整体为止。 解说 归并排序中,分割序列所花费的时间不算在运行时间内(可以当作序列 阅读全文

posted @ 2021-06-17 20:13 胡子就不刮 阅读(45) 评论(0) 推荐(0) 编辑

排序--堆排序

摘要: 堆排序的特点是利用了数据结构中的堆。 从降序排列的堆中取出数据时会从最大的数据开始取,所以将取出的数据反序输出,排序就完成了。 解说 堆排序一开始需要将 n 个数据存进堆里,所需时间为 O(nlogn)。排序过程中,堆从空堆的状态开始,逐渐被数据填满。由于堆的高度小于 log2n,所以插入 1 个数 阅读全文

posted @ 2021-06-17 20:10 胡子就不刮 阅读(189) 评论(0) 推荐(0) 编辑

排序--插入排序

摘要: 插入排序是一种从序列左端开始依次对数据进行排序的算法。在排序过程中,左侧的数据陆续归位,而右侧留下的就是还未被排序的数据。插入排序的思路就是从右侧的未排序区域内取出一个数据,然后将它插入到已排序区域内合适的位置上 解说 在插入排序中,需要将取出的数据与其左边的数字进行比较。就跟前面讲的步骤一样,如果 阅读全文

posted @ 2021-06-17 20:05 胡子就不刮 阅读(53) 评论(0) 推荐(0) 编辑

排序--选择排序

摘要: 选择排序就是重复“从待排序的数据中寻找最小值,将其与序列最左边的数字进行交换”这一操作的算法。在序列中寻找最小值时使用的是线性查找。 解说 选择排序使用了线性查找来寻找最小值,因此在第 1 轮中需要比较 n -1 个数字,第2 轮需要比较 n -2 个数字……到第 n -1 轮的时候就只需比较 1 阅读全文

posted @ 2021-06-17 19:48 胡子就不刮 阅读(43) 评论(0) 推荐(0) 编辑

排序--冒泡排序

摘要: 冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。 解说 在冒泡排序中,第 1 轮需要比较 n -1 次,第 2 轮需要比较 n -2 次……第 n 阅读全文

posted @ 2021-06-17 19:46 胡子就不刮 阅读(115) 评论(0) 推荐(0) 编辑

导航