同时对其他的查找和排序必须能准确说出它们的特点、对其平均时间复杂度、最差时间复杂度、额外空间消耗和稳定性烂熟于胸。 1、内排序: 插入排序:直接插入排序(InsertSort)、希尔排序(ShellSort) 交换排序:冒泡排序(BubbleSort)、快速排序(QuickSort) 选择排序:直接选择排序(SelectSort)、堆排序(HeapSort)
如果是无序的,也可以先进行排序。但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数据是否在容器当中,返回的索引无实际的意义。基本思想:也称为是折半查找,属于有序查找算法。用给定值先与中间结点比较。比较完之后有三种情况:相等 说明找到了 要...
1.冒泡排序算法 每次把一个数字放在最前边或最后边的 位置上 不断调整相邻两个数字的顺序最终把一个 数字放在最前或最后的位置上 2.选择排序算法 每次把一个数字放在最前边或最后边 的位置上 用选定位置里的数字和所有其他数字做 顺序调整,最终把合适的数字放在 这个位置里 3.插入排序 把没有排好序的数字中最...
四个查找算法 线性搜索 (Linear Search) 在线性搜索中,我们从列表中的第一个元素,按顺序逐一检索到列表最后一个元素 最优:目标值位于列表的第一位。 最差:目标值位于列表的最后一位。 适用于: 未排序列表 小列表 二元搜索 (Binary Search) 在二进制搜索中,列表必须按一定顺序排序。我们通过从列表的中间选取值...
一、排序算法 1.1 冒泡排序 冒泡排序是最简单的一种排序方法,它的原理是将一列数据中较大(或较小)的数据逐次向右推移的一种排序方法。冒泡排序分为内外两层循环。外层是总共要跑的遍数,2个数据比较一遍,3个数据比较一遍,以此类推,n个数据就跑了n-1遍。内层循环真正比较数据。以升序为例,每次比较把较...
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 使用二分查找有两个必须满足条件: 必须采用顺序存储结构。 必须按关键字大小有序排列。 图解二分查找算法 ...
通过有效的排序算法,我们可以将数据按照特定的顺序排列,从而方便后续的查找和访问。高效的查找算法能够快速准确地定位所需数据,提高程序的执行效率。 算法排序 算法排序是一种将一组数据按照特定顺序重新排列的过程。常见的排序算法包括冒泡排序、快速排序、插入排序、选择排序等。每种排序算法都有其特定的适用场景和时间...
1 选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的...
本章总结查找和排序算法:顺序查找、折半查找、直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序以及排序算法性能比较。 1、顺序查找 顺序查找就是在文件的关键字结合key[1,2,…n]中找出与给定的关键字key相等的文件记录。 步骤描述:
// // 将前面额冒泡排序算法,封装成一个方法 public static void bubbleSort(int[] arr) { // 冒泡排序 的时间复杂度 O(n^2), 自己写出 int temp = 0; // 临时变量 boolean flag = false; // 标识变量,表示是否进行过交换 for (int i = 0; i < arr.length - 1; i++) ...