
数据结构
文章平均质量分 64
学习数据结构中的知识点和问题
北辰水墨
这个作者很懒,什么都没留下…
展开
-
十大排序算法(冒泡排序、插入排序、选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序)
十大排序算法(冒泡排序、插入排序、选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序)十大排序的思想和代码的实现!!!原创 2024-03-10 19:50:01 · 27189 阅读 · 30 评论 -
二叉树知识点
树的高度(深度):从1开始算(为了避免空树的时候表示比较尴尬)。节点的祖先:从它的父亲开始算(包括它父亲),都是它的祖先。叶节点(终端节点):子树为0的节点。B,H,I,P,Q,K,L,M,N都是叶节点。父节点(双亲节点):一个节点含有的子节点。分支节点(非终端节点):子树不为0的节点。A,D,E,F,G,J,都是分支节点。树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。子孙:从它开始的下面的所有分支都是它的子树。A的子孙,下面的都是它的子孙。节点的度:一个节点含有的子树。原创 2024-02-18 12:43:37 · 267 阅读 · 1 评论 -
深入了解:二叉树(最详细,约10000字)
二叉树,是一种重要的数据结构,每个节点最多有两个子节点:左子节点和右子节点。这种简洁而灵活的结构,被广泛运用在算法和数据处理中。本篇文章将通过深入解释二叉树的概念和操作,你将掌握解决复杂问题的利器,拓展编程技能的边界。让我们一同探索二叉树的神秘世界,挑战数据结构的极致魅力,开启编程之旅的精彩探索!原创 2024-03-21 20:44:00 · 1330 阅读 · 4 评论 -
排序算法--堆排序
用到向下调整算法,比较两个孩子的大小,选出大的孩子,与父亲比较,如果孩子大于父亲,交换。把第一个最大的数与最后一个数交换,然后把最后一个数踢出堆,继续向下调整算法,再交换次大的数。用小堆的坏处:交换之后踢出第一个数,会导致堆的错位,要重新建堆,时间复杂度O(N^2)1.堆的概念:堆一般指的是二叉堆,顾名思义,二叉堆是完全二叉树或者近似完全二。4.建堆的时间复杂度是O(N)-->(粗略的了解原理,记住结论就行)堆排序的时间复杂度是O(N*logN),优于选择排序O(N^2)2.堆的性质:①完全二叉树。原创 2024-02-27 10:54:30 · 574 阅读 · 0 评论 -
快速排序(左右指针法),在写代码的时候会有陷阱
左右指针法和挖坑法大同小异,都是从右边找比key小的数,在左边找key大的数。只是不需要挖坑。我为什么还要提左右指针法呢?因为我在写这个代码的时候遇到了两个坑。原创 2024-02-28 19:31:44 · 417 阅读 · 0 评论 -
排序算法之快速排序(挖坑法)
挖坑法的思想:记第一个数为key,要调整key的位置,使得左边的都要比key的小,右边的数都比key的大。再从左边begin找大于28(key)的数,把那个数放在hole中,然后让hole==begin。让end找到小于28(key)的数,把那个数放到hole坑中,然后让hole==end。记录下关键字key==begin,把28那个位置挖坑hole==begin。然后arr[hole]=key;用到分治递归,就要改变函数的参数,要有left和right。再分治思想,分成左边和右边。原创 2024-02-27 23:11:50 · 562 阅读 · 0 评论 -
循环队列的实现与优势
循环队列是一种常见的数据结构,通过在数组中实现循环移动的方式解决了普通队列的空间浪费问题。本文将探讨循环队列的实现原理、操作方法以及其在实际应用中的优势。原创 2024-03-06 18:31:29 · 1069 阅读 · 0 评论 -
排序算法--冒泡排序
(2)3,-1,9,10,20 ----9比 -1大,所以9跟 -1交换。(1)-1,3,9,10,20 ----3比 -1大,进行交换。(3)3,-1,9,10,20 ----9跟10比较,不交换。(1)-1,3,9,10,20 ----3和-1比较,不交换。(1)-1,3,9,10,20 ----3和-1比较,不交换。(1)3,9,-1,10,20 ----3跟9比较,不交换。(1)总计需要进行(n-1)轮排序,也就是(n-1)次大循环。原创 2024-02-27 12:53:52 · 658 阅读 · 0 评论 -
深入理解--指针
前面学习函数学到,函数参数可以为 int、char、float 等,但是在操作时,这些参数只作为形参,所有操作都只在函数体内有效(除对指针的操作外),那么今天来学习一下指针作为函数参数。指针运算符*(间接寻址符):与&为逆运算,作用是通过操作对象的地址,获取存储的内容。例:x = &i,x 为 i 的地址,*x 则为通过 i 的地址,获取 i 的内容。如上面,p(p + 0)指向 nums[0]、p + 1 指向 nums[1]、、、类推可得,p+i 指向 nums[i],由此可以准确操作指定位置的元素。原创 2024-02-21 22:00:03 · 1188 阅读 · 0 评论