
算法和数据结构基础
文章平均质量分 72
予生
这个作者很懒,什么都没留下…
展开
-
链表的一些Java练习题_6
文章目录链表输入链表头节点,奇数长度返回中点,偶数长度返回上中点输入链表头节点,奇数长度返回中点,偶数长度返回下中点输入链表头节点,奇数长度返回中点前一个,偶数长度返回上中点前一个输入链表头节点,奇数长度返回中点前一个,偶数长度返回下中点前一个给定一个单链表的头节点head,请判断该链表是否为回文结构将单向链表按某值划分成左边小,中间相等,右边大的形式给定两个可能有环也可能无环的单链表,头节点head1和head2。请实现一个函数,如果两个链表相交,请返回相交的第一个节点。如果不相交,返回null。 链表原创 2021-04-19 15:44:03 · 319 阅读 · 0 评论 -
几种排序算法的总结_5
几种排序算法的总结 基于比较的算法:选择冒泡插入归并快速排序以及堆排序,这类算法,只要规定好两个样本怎么比大小就可以直接复用,同时时间复杂度的极限是O(N*logN); 不进行比较的排序:桶排序(计数排序,基数排序);同时,这种排序对样本数据有严格要求(如非负、数的范围小等),不易改写; 具有稳定性的有冒泡、插入、归并排序以及计数和基数排序; 其他排序(如选择,快排,堆排序,希尔排序等)不稳定; 时间复杂度O(NlogN),额外空间复杂度低于O(N),且稳定的基于比较的算法是不存在的; 如何选择使用哪种.原创 2021-04-16 15:34:59 · 228 阅读 · 0 评论 -
堆,前缀树,桶排序_4
文章目录堆一个大根堆求最大值,并将这个最大值删掉,删掉后怎么形成新的完全二叉树堆排序前缀树(普通的树,而非二叉树)前缀树的代码实现:完成在一堆字符串的增加,删除,查找以及某前缀在这些字符串出现过几次桶排序计数排序代码基数排序代码排序算法的稳定性 堆 构建一个堆 * 堆是什么呢? * 其实就是一个完全二叉树,即所有的父节点层不存在空的节点, * 最后一层节点的顺序必须按着顺序来,不能说左边没有节点,右边却有节点,那这样就不是完全二叉树了 * 堆又分为大根堆和小根堆 * 大根堆即父节点比它下面的子节点都要大,小原创 2021-04-16 14:49:30 · 367 阅读 · 0 评论 -
冒泡排序,插入排序,选择排序,归并排序,快速排序代码_3
文章目录冒泡排序 O(n²)插入排序 O(n²)选择排序 O(n²)归并排序 O(nlogn)在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和快速排序 O(nlogn) 以下算法只给了代码 算法思想点击下面的链接 计数排序,基数排序,桶排序,选择排序,冒泡排序,插入排序,希尔排序,归并排序,快速排序的算法思想 冒泡排序 O(n²) /** * @Author Z * @Date 2021/3/23 16:36 * 冒泡排序 */ public c原创 2021-03-29 18:55:09 · 191 阅读 · 0 评论 -
二分法_链表_栈和队列_哈希表和有序表_2
文章目录二分法异或1.交换两个数2.一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这个奇数次并打印这个数链表1.单向链表的反转2.双向链表的反转3.删除单向链表中的某个数栈和队列1.使用双向链表实现栈和队列2.使用数组实现栈和队列3.实现一个特殊的栈,在基本功能的基础上,再实现返回栈中最小元素的功能4.如何用栈结构实现队列结构5.如何用队列结构实现栈结构递归求数组arr[L..R]中的最大值,怎么用递归方法实现。哈希表HashMap,HashSet有序表TreeMap,TreeSet 二分法原创 2021-03-25 16:26:53 · 494 阅读 · 1 评论 -
常见的几种排序方法_计数排序,基数排序,桶排序,选择排序,冒泡排序,插入排序,希尔排序,归并排序,快速排序_1
文章目录算法的优劣计数排序基数排序桶排序选择排序冒泡算法插入排序希尔排序归并排序快速排序 算法的优劣 时间维度 空间维度 时间复杂度:就是指时间针对于问题规模的变化而变化的规律 O(1),时间不随问题规模的变化而变化 O(n),时间的变化规律为x=y; 计数排序 桶排序思想中的一种,非比较排序 应用:量大但是范围小(几万个数以上,但是所有的数取值范围小,如0到一千。 算法思想: 如数组int[] arr={1,5,1,5,9,0,5,6,8,3,2,4,4} 这个排序算法需要额外的一个计数数组coun原创 2021-03-21 21:09:09 · 406 阅读 · 0 评论