
数据结构与算法
文章平均质量分 89
阿拉阿伯
除了自己的无知,
我什么都不懂。
展开
-
排序算法之总述
排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序数据通常能够被更高效地查找、分析和处理。原创 2024-08-12 19:43:31 · 1215 阅读 · 0 评论 -
排序算法之插入排序
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。原创 2024-08-12 19:42:18 · 897 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。原创 2024-08-12 19:38:00 · 851 阅读 · 0 评论 -
排序算法之归并排序
归并排序(Merge Sort)是一种基于分治法的有效排序算法。它将一个列表分成较小的子列表,对每个子列表进行排序,然后合并这些子列表以产生一个有序列表。原创 2024-08-12 19:32:44 · 1625 阅读 · 0 评论 -
排序算法之选择排序
选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是不断地从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾,直到整个列表有序。原创 2024-08-12 19:28:59 · 1226 阅读 · 0 评论 -
排序算法之折半插入排序
折半插入排序(Binary Insertion Sort)是插入排序的一种改进版本。它在插入每个元素时使用二分查找(Binary Search)来找到插入位置,从而减少比较次数。原创 2024-08-12 19:27:52 · 923 阅读 · 0 评论 -
排序算法之快速排序
快速排序(Quick Sort)是一种高效的排序算法,采用分治法策略,通过选择一个基准(pivot),将数组划分为两部分,然后递归地对两部分分别进行排序。原创 2024-08-12 19:26:13 · 734 阅读 · 0 评论 -
排序算法之堆排序
堆排序(Heap Sort)是一种基于堆的排序算法,具有较高的效率和稳定性原创 2024-08-12 19:23:48 · 1070 阅读 · 0 评论 -
排序算法之希尔排序
1959年Shell发明,是简单插入排序的改进版。是一种高效的排序算法,通过分组和逐步缩减增量,使得数组在接近有序的情况下进行最终排序,从而提高效率。原创 2024-08-12 19:22:33 · 704 阅读 · 0 评论 -
排序算法之基数排序
基数排序(radix sort)的核心思想与计数排序一致,也通过统计个数来实现排序。在此基础上,基数排序利用数字各位之间的递进关系,依次对每一位进行排序,从而得到最终的排序结果。原创 2024-08-12 19:20:14 · 1240 阅读 · 0 评论 -
排序算法之桶排序
桶排序(bucket sort)是分治策略的一个典型应用。它通过设置一些具有大小顺序的桶,每个桶对应一个数据范围,将数据平均分配到各个桶中;然后,在每个桶内部分别执行排序;最终按照桶的顺序将所有数据合并。原创 2024-08-12 19:18:27 · 929 阅读 · 0 评论 -
排序算法之计数排序
计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于1954年由[哈罗德·H·西华德]提出。计数排序使用一个额外的数组𝐶,其中第i个元素是待排序数组𝐴中值等于𝑖的元素的个数。然后根据数组𝐶来将𝐴中的元素排到正确的位置。原创 2024-08-12 19:17:28 · 1423 阅读 · 0 评论 -
排序算法之鸡尾酒排序
title: 鸡尾酒排序date: 2024-7-30 10:59:43 +0800categories:排序算法tags:排序算法鸡尾酒排序description: 鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 是冒泡排序的一种变形。此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。math: true鸡尾酒排序鸡尾酒排序(Cocktail Shaker Sort)是一种双向冒泡排序算法。它通过双向遍历数组,每次在两端交换元素,从而使得大值和小值可以同时移动到原创 2024-08-12 16:37:55 · 1227 阅读 · 0 评论 -
排序算法之梳排序
梳排序(Comb Sort)是一种由弗拉基米尔·多博舍维奇(Wlodzimierz Dobosiewicz)于1980年所发明的不稳定排序算法,并由史蒂芬·莱西(Stephen Lacey)和理查德·博克斯(Richard Box)于1991年四月号的Byte杂志中推广。梳排序是改良自冒泡排序和快速排序,其要旨在于消除“乌龟”,亦即在数组尾部的小数值,这些数值是造成冒泡排序缓慢的主因。相对地,“兔子”,亦即在数组前端的大数值,不影响冒泡排序的性能。原创 2024-08-12 16:33:18 · 1071 阅读 · 0 评论 -
深度优先搜索
与广度优先搜索不同的是,深度优先搜索会优先考虑最近新遇到的搜索状态。所以算法会沿着一条路往下走,直到遇到目标状态,或者一条死路。原创 2021-02-19 10:14:38 · 192 阅读 · 0 评论 -
广度优先搜索
广度优先搜索是一个按顺序依次尝试可能的搜索选项的算法。换句话说,它每次都会选择尝试最先发现的但还没有尝试过的选项。原创 2021-02-18 17:43:05 · 449 阅读 · 0 评论 -
二分搜索
二分搜索算法用于高效地在有序数组A中查找一个目标值v。 和线性搜索不同,二分搜索利用数据结构中的信息让搜索更高效。高效算法的关键是信息。原创 2021-02-18 16:45:34 · 409 阅读 · 0 评论 -
PageRank背后的数学
转载自 谷歌背后的数学 --卢昌海一. 引言在如今这个互联网时代, 有一家公司家喻户晓——它自 1998 年问世以来, 在极短的时间内就声誉鹊起, 不仅超越了所有竞争对手, 而且彻底改观了整个互联网的生态。 这家公司就是当今互联网上的第一搜索引擎: 谷歌 (Google)。在这样一家显赫的公司背后, 自然有许许多多商战故事, 也有许许多多成功因素。 但与普通商战故事不同的是, 在谷歌的成功背...原创 2019-05-13 15:30:11 · 816 阅读 · 0 评论 -
二叉树的层次遍历(层次遍历,自底向上的层次遍历,锯齿形层次遍历)
题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], ...原创 2019-05-13 15:51:21 · 1758 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历
二叉树的前序遍历题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]题目解析用**栈(Stack)**的思路来处理问题。前序遍历的顺序为根-左-右,具体算法为:把根节点 push 到栈中循环检测栈是否为空,若不空,则取出栈顶元素,保存其值看其右子节点是否...原创 2019-05-13 16:38:31 · 305 阅读 · 0 评论 -
算法 —— 两数之和,三数之和,四数之和
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一:...原创 2020-01-20 14:55:18 · 676 阅读 · 0 评论