算法
可厉害的土豆
无论外界再乱,也不能乱了自己的内心
展开
-
对栈理解与应用
栈的“底”是有标志性的,因为存储在栈中更靠近“底”的项就是栈中储存时间最长的项。D 选项 1 2 3 先入栈,出栈 2 ,3在入栈在出栈,剩下 4 5 入栈 出栈 5 4,最后1出栈 总体:2 3 5 4 1。比如:最贴近生活的堆餐盘问题、数制的转换、扩话匹配的检测表达式的求值、舞伴的问题。B选项:1 2先入栈,再出栈 2 1,剩下的 345入栈,再出栈 5 4 3。C 选项 1234入栈,再出栈 4 3 2 1,而C选项的结果是 4 3 1 2 很明细这是不可能的。利用栈的特点解决做题的问题。原创 2023-06-17 21:01:42 · 290 阅读 · 0 评论 -
九阳真经之滑动窗口
最好理解的滑动窗口,开发你的脑力值原创 2022-09-19 23:12:35 · 77 阅读 · 0 评论 -
散列表的查找
带你深入了解哈希表原创 2022-06-14 00:08:25 · 139 阅读 · 0 评论 -
十大排序之堆排序
堆排序算法就是在根节点与孩子节点比较大小,然后交换之前的值。堆排序利用来二叉树的性质,而这个树是一种特殊的树完成二叉树。堆排序分为大堆和小堆。大堆定义:每个根节点的值都大于左孩子和右孩子的值。大堆排序是升序的,值是从小到大的排序方式性质: array[i] > array[2 * i + 1] && array[i] > array[2 * i + 2]小堆定义:每个根节点的值都小于左孩子和右孩子的值。小堆排序是降序的,值是从大到小的排序方式性质 array[i] &l原创 2021-08-06 00:30:21 · 176 阅读 · 0 评论 -
十大排序之插入排序
通常在整理扑克的方法是一张一张的来,将每一张拍插入其他已有有序的牌中适当的位置。当时在计算机的实际中,为了给插入的元素腾出空间,需要将其余所有元素在插入之前都右移动一位,这种算法将插入排序。思路:1、将排序的数组的第一个元素当初有序,把第二个到最后一个元素看成未排序序列。2、从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置,若如何找到比未排序的数,就交换两个数。int Insert_Sort(int* array, int length) { int i, j; for (原创 2021-07-27 23:40:36 · 57 阅读 · 0 评论 -
十大排序之快速排序
思绪:1、从已有的数组中找到一个基数2、分别派出两个哨兵i和j,先让哨兵j移动,找到比基数小的,此时记录哨兵j的位置,然后找到哨兵i的位置,记录哨兵的i的位置。然后将两数交换。这样,比基数大的数全在右边,比基数小的数全在左边。3、重复 步骤2,当 i == j 的时候,将中间两个数进行交换。void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp;}int Quick_Sort(int* arr, int le原创 2021-07-26 21:52:34 · 46 阅读 · 0 评论 -
十大排序之希尔排序
最近在学习十大算法,看到希尔排序,花了好大脑力才想出来。原创 2021-07-23 21:16:52 · 96 阅读 · 0 评论