数据结构与算法
文章平均质量分 78
以基础知识为多(以题代知识点),逐步往深层次学习。大部分笔记都是图文并茂的形式记录,包括gif文件。
涛涛同学debug
重复,反思,应用。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分查找法
一、基本概念二分查找法(Binary Search)算法,也叫折半查找算法。二分查找针对的是一个有序的数据集合,查找思想有点类似于分治思想。每次都通过跟区间的中间元素对比,将带查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。二分查找是一种非常非常高效的查询算法,时间复杂度为O(logn)。二、算法实现之前有写过利用数组进行数据查找的文章,其采用的是二分查找,不过原先的实现代码并不通用,因为源代码只适用于整型数组,倘若要求在浮点数组或者字符串数组中查找,那只能重新编码了。因此,对原创 2020-12-28 22:53:17 · 8540 阅读 · 0 评论
-
《恋上数据结构与算法》第1季:双向链表实现(超详细笔记,图文并茂)
之前我们所学的链表也叫做单向链表,单向链表的其中一个不好之处就是 无论添加,删除,查询,修改等操作,都需要从头结点开始依次查询要操作的节点。因此,为了解决这一问题,我们就需要使用双向链表,使用双向链表可以提升链表的综合性能。原创 2022-11-27 00:54:12 · 773 阅读 · 0 评论 -
《恋上数据结构与算法》第1季:链表原理实现(图文并茂)
动态数组有个明显的缺点,可能会造成内存空间的大量浪费;第一种:插入到0的位置,需要使用first指向新节点。第二种:插入到非0的位置,直接找到前一个节点进行处理。的线性表,所有元素的内存地址不一定是连续的。到此为止,我们成功的实现了链表。first 指向 null。size 是否等于 0。0 到 size-1。原创 2022-11-27 00:06:24 · 938 阅读 · 0 评论 -
《恋上数据结构与算法》第1季:动态数组原理实现(图文并茂,一文带你了解ArrayList底层实现)
在很多编程语言中,数组有个致命的缺点,无法动态修改容量;实际开发中,我们希望数组的容量是动态变化的。因此,本内容讲从底层剖析手把手教你理解掌握ArrayList类中各方法底层实现。原创 2022-11-26 00:48:24 · 928 阅读 · 0 评论 -
《恋上数据结构与算法》第1季:算法概述
1. 算法和数据结构1.1 什么是算法1.2 什么是数据结构2. 时间复杂度2.1 如何判断一个算法的好坏呢?2.2 基本操作执行次数2.3 大O表示法3. 空间复杂度3.1 概念定义4. 算法优化5. 总结算法是用于解决特定问题的一系列的执行步骤(方法)。比如:计算a和b的之和、计算1+2+3+…+n的和//计算a和b的之和 public static int plus(int a , int b) {原创 2022-11-25 17:09:26 · 1024 阅读 · 0 评论 -
《恋上数据结构与算法》的学习笔记 目录索引(持续更新迭代中)
抛开学习数据结构与算法的角度不说,恋上数据结构与算法的每一份数据结构的代码都是健壮而又完善的,完全可以在业务中需要的时候直接拿来用。原创 2022-11-25 14:25:02 · 371 阅读 · 0 评论 -
递归算法——超详细讲解(图文并茂)
To iterate is human,to recurse divine. ---L.Peter Deutsch这句经典名言体现了递归算法的重要性,虽然执行效率不如迭代法,但它可以使那些很复杂的问题化成简单化。什么是递归呢?把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称为递归函数。简言之:在定义自身的同时又出现自身的直接或间接调用。注意:递归必须要有一个退出的条件!用例题来说明其中的原理。例1:求 n!。【方法一:迭代法】#include <st原创 2021-01-18 11:54:34 · 79955 阅读 · 3 评论 -
Java之 冒泡排序
“冒泡排序”的名字由来:是因为最小(或最大)的元素会经由交换慢慢“浮”到数列的顶端(降序或升序),就如同水中的气泡最终会上浮到 顶端一样,故名“冒泡排序”。一、冒泡排序的原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。二、代码实例现有一个nums数组,里边存有20,1.原创 2021-01-04 18:36:07 · 235 阅读 · 0 评论 -
利用数组进行数据查找---折半查找法(二分法)
二分法查找:1.适用情况:在一批有序数据中查找某数。2.基本思想:选定这批数据中居中间位置的一个数与查找数比较,看是否为所找之数,若不是,利用数据的有序性,可以决定所找的数是在选定数之前还是之后,从而很快可以将查找范围缩小一半,就是一半一半的缩小范围,进而较快地找到目的数。理论思想看似懵懵地,其实我已经很简结易懂的表达了,接着就拿例题来理解如何实现二分法查找。例题:假设 数组a中的数据是按由小到大的顺序排序:-12,0,6,16,23,56,80,100,110,115;从键盘上输入一个数,判断该数原创 2020-06-15 21:44:18 · 5883 阅读 · 0 评论 -
排序算法之冒泡法(起泡法)
起泡法的理解及基本思路:通俗理解就是将小的数浮上来,大的则沉底(小浮大沉)。基本思路 每次将相邻两个数比较,将小的调到前面。如下图所示:显而易知,共有六个数,在第一趟排序时,需要进行5次两两比较;在第二趟,则需进行4次比较;以此类推,在最后一趟时(第五趟),只需比较1次。因此,得出一结论:若有n个数,则要进行n-1趟比较,在第一趟要进行n-1两两比较,在第j趟则要进行n-j次比较。例如:有10个地区的面积,要求对他们按由小到大的排列。#include <stdio.h>int ma原创 2020-06-15 18:23:40 · 12133 阅读 · 0 评论
分享