- 博客(8)
- 收藏
- 关注
原创 排序算法---插入排序
插入排序算法思想 把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码实现 public static void main(String[] args) { int[] nums = {101, 34, 119, 1, -1, 89}; insertSort(nu
2022-05-25 23:30:47
112
原创 排序算法---选择排序
基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 排序思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值,与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,
2022-05-23 23:13:40
146
原创 排序算法---冒泡排序
基本思想 通过对待排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。 过程 (1) 一共进行 数组的大小-1 次 大的循环 (2) 每一趟排序的次数在逐渐的减少 (3) 如果我们发现在某趟排序中,没有发生一次交换,
2022-05-23 22:55:31
220
原创 数据结构——单链表
数据结构——单链表 链表的介绍和操作: 经典面试题: 1.单链表反转 思路分析: 1.先定义一个结点reverseHead; 2.遍历原来的链表,每遍历一个结点,就将其取出放在新链表的前端; 3.将原链表头结点指向新链表head.next = reverseHead.next 2.单链表的逆序打印 3.合并两个有序单链表,合并后仍然有序; 代码实现: public static void reversetList(HeroNode head) { //如果当前链表为空,或者只有一个节点
2022-05-09 23:33:01
274
原创 数据结构——数组模拟环形队列
数据结构——数组模拟环形队列 对数组模拟队列的优化,充分利用数组. 因此将数组看做是一个环形的。(通过取模的方式来实现即可) 分析 尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的 时候需要注意 (rear + 1) % maxSize == front 【队列满] rear == front [队列空] 环形队列思路: 1.front变量含义调整;front指向队列的第一个元素,即arr[front]就是对队列的第一个元素,front初始值为0 2.rear变量
2022-05-06 23:17:20
226
原创 数据结构——数组队列
数据结构——数组队列 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列思路 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量; 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear 则是随着数据输
2022-05-06 22:58:58
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅