
数据结构与算法
文章平均质量分 57
数据结构与算法记录
默辨
希望成为一个有思想的软件工程师
展开
-
Leetcode 203 移除链表元素
Leetcode 203 移除链表元素原创 2024-01-29 23:44:26 · 507 阅读 · 0 评论 -
Leetcode 206 反转链表
LeetCode 206 反转链表原创 2024-01-29 21:59:24 · 513 阅读 · 0 评论 -
Leetcode 206 反转链表
LeetCode 206 反转链表原创 2024-01-28 22:00:25 · 578 阅读 · 0 评论 -
常见递归算法题目整理
内含阶乘、二分查找、反转字符串、斐波那契数列、汉诺塔、杨辉三角题目原创 2024-01-28 17:51:54 · 818 阅读 · 0 评论 -
五种List集合的简单实现
本文是对不同形式List集合的增删改查实现,仅是对学习过程进行记录。原创 2024-01-21 15:35:31 · 572 阅读 · 0 评论 -
二分查找算法
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功原创 2024-01-14 22:51:07 · 525 阅读 · 0 评论 -
递归、非递归、宽度遍历二叉树
本文只要记录使用三种不同的二叉树遍历形式。递归遍历、非递归遍历对二叉树分别进行前序遍历、中序遍历、后序遍历,以及利用队列完成对二叉树逐层的宽度遍历原创 2024-01-07 17:45:53 · 471 阅读 · 0 评论 -
异或^运算——找到数组中为奇数个数的元素
异或^运算——找到数组中为奇数个数的元素原创 2022-06-07 00:05:46 · 779 阅读 · 1 评论 -
常见排序算法之基数排序
文章目录1、概述2、测试代码3、测试小案例1、概述基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。核心思想:根据我们数字在不同位置上的大小,不断地循环(先看个位原创 2020-05-22 09:41:06 · 596 阅读 · 0 评论 -
常见排序算法之冒泡排序
文章目录1、概述2、传统代码3、优化后代码4、测试案例1、概述冒泡排序(Bubble Sort),是一种的较简单且常见的的排序算法。它重复地访问排序的元素列,依次比较两个相邻的元素,如果顺序不符合要求就把他们进行交换。访问元素的工作是重复地进行,当没有相邻元素需要交换时,说明该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。2、传统代码核心思想:我们每一次原创 2020-05-11 18:30:47 · 322 阅读 · 0 评论 -
常见排序算法之归并排序
文章目录1、概述2、测试代码3、小案例1、概述归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。归并排序可以分为两部分,一部分用来分解数组(使用递归的方式),一部分用来合并数组2、测试代码核心思想:将这个算法分为分(分解)和治原创 2020-05-19 22:21:29 · 314 阅读 · 0 评论 -
常见排序算法之希尔排序
文章目录1、概述2、希尔排序之交换法3、希尔排序之移动法4、测试案例1、概述由于简单的插入排序每次数据量变多的时候,数据需要移动且交换数据的次数也会变多,继而影响效率。希尔排序就是在这个基础上进行改良,让数据能在较短的移动次数内就完成排序,继而提高排序效率。希尔排序是希尔在1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更加高效的版本,也称为缩小增量排序(不断地除2)。核心思想:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减原创 2020-05-13 22:57:19 · 921 阅读 · 0 评论 -
常见排序算法之选择排序
文章目录1、概述2、代码实现3、测试代码1、概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。2、代码实现核心思想:如果希望我们的数据按照从小到大进行排列,那么我们需要经历(n-1)次循环(最后一次只有一个数),每一次循环的目的则原创 2020-05-11 20:02:40 · 368 阅读 · 0 评论 -
常见排序算法之插入排序
文章目录1、概述2、代码实现3、测试代码1、概述插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个数据插入到已经排好序的数据表中,从而一个新的长度数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动2、代码实现实现思路:我们将我们的数据想象成三堆。第一堆是我们已经排好序的数字,第二堆是我们手上拿的数字,第三堆是还没有排序的数原创 2020-05-11 21:08:05 · 297 阅读 · 0 评论 -
常见排序算法之快速排序
文章目录1、概述2、代码实现3、测试案例1、概述快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2、代码实现快速排序的方式有两种,主要的区别就是选择基准值的不同,但是他们的核心思想都是一样的,只是说我们在代码的是线原创 2020-05-14 16:19:46 · 366 阅读 · 0 评论 -
异或^运算——完成两数交换
异或运算完成两数交换原创 2022-06-06 23:26:33 · 268 阅读 · 0 评论