![](https://img-blog.csdnimg.cn/eae2634419104b508820f064f6cbee11.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 64
计算机理论知识!
南波塞文
你很懒,还没有添加简介
展开
-
Leetcode_2两数相加
链表是一种物理内存非连续存储,非顺序的线性数据结构,其有一系列节点组成,每个节点由两个部份组成:数据域和指针域。原创 2024-04-04 21:32:19 · 867 阅读 · 0 评论 -
数据结构之哈希表
哈希表(Hash Table) 也称散列表,底层数据结构为一维数组存储K-V形式的数据。其基本思想是:通过key的哈希值来映射到数组中的索引位置,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数。散列函数非常重要,它是决定哈希表性能的关键。优秀的散列函数能够尽可能地减少哈希冲突,但是哈希冲突无法避免。可以参考HashMap底层数据结构。jdk1.8的HashMap底层数据结构为数组+链表+红黑树。hash冲突(哈希碰撞): 对不同的关键字可能得到同一散列地址,即k原创 2022-01-07 22:36:40 · 694 阅读 · 1 评论 -
排序算法之快速排序
基本思想: 在待排序的元素任取一个元素作为基准(通常选第一个元素,称为基准元素)将待排序的元素进行分块,比基准元素大的元素移动到基准元素的右侧,比基准元素小的移动到作左侧,从而一趟排序过程,就可以锁定基准元素的最终位置。对左右两个分块重复以上步骤直到所有元素都是有序的(递归)。public class QuickSort { public static void main(String[] args) { int[] array = new int[]{3, 5, 2, 4, 8,原创 2022-01-05 16:29:52 · 460 阅读 · 0 评论 -
排序算法之插入排序
插入排序原创 2022-01-05 16:00:53 · 347 阅读 · 0 评论 -
查找算法之二分查找
前提: 待查找的序列为有序序列二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。基本思想: 有n个元素的数组array(假设为升序),low为左边界,high为右边界。取数组下标middle = (low + high)/2与目标元素(target)做比较,如果array[middle] == target,则找到middle索引值,算法中止;如果array[middle] < target,则只要在数组array的右半部分去找,low = middle + 1,继续原创 2022-01-03 22:53:11 · 128 阅读 · 0 评论 -
利用栈解决回文问题
栈这个数据结构如何解决回文问题?原创 2021-12-31 21:20:06 · 399 阅读 · 1 评论 -
排序算法之选择排序
选择排序原创 2022-01-05 15:46:14 · 163 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。基本思想: 将待排序的序列元素依次两两进行比较按照从小到大(或从大到小)排序,如果前面一个数比后面的数大则进行交换。N个元素经过N - 1次可以比较可以选出该序列最大的数,再从N - 1个元素中选出次大的数。。。如此下去则可以将整个序列排好序。动图:时间复杂度:最好时原创 2022-01-03 23:26:50 · 208 阅读 · 1 评论 -
数据结构与算法之双向链表的设计与实现
之前所介绍的是单向链表,查找元素只能从头节点开始寻找,判断出符合条件的元素,时间复杂度为O(n)。当链表节点数目过多时,查询性能下降。而有了双向链表后,我们可以从两个方向查询元素,提升查询效率。原创 2022-12-19 19:37:07 · 473 阅读 · 0 评论 -
数据结构与算法之单向链表的设计与实现
动态数组有个明显的缺点:可能会造成内存空间的大量浪费。能否设计一种数据结构以达到用到多少就申请多少内存?链表可以办到这一点。原创 2022-01-01 22:35:48 · 445 阅读 · 0 评论 -
数据结构与算法之动态数组的设计与实现
程序 = 数据结构 + 算法,数据结构在问题解决中主要用来存放要处理的数据与实现算法策略。原创 2021-12-31 20:54:06 · 389 阅读 · 4 评论 -
数据结构与算法之复杂度分析
一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量,即时间复杂度和空间复杂度。原创 2022-01-16 21:21:13 · 965 阅读 · 2 评论