算法数据结构
文章平均质量分 56
数据结构加算法
爱打辅助的小可爱
可以的话,给个关注吧,持续更新中…
展开
-
排序方式(8种)详解8—桶排序
目录1、桶排序概述原理:图示:时间和空间复杂度:2、桶排序分类桶排序(优化版)3、代码实现及运行结果main函数:桶排序(优化版)留言:为作者一人拙见,仅参考使用,如有帮助,不甚荣幸。1、桶排序概述 桶排序工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不...原创 2022-04-21 22:56:22 · 888 阅读 · 2 评论 -
贪心算法(算法,java)
又称贪婪算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。......原创 2022-07-21 13:59:52 · 409 阅读 · 0 评论 -
字符串查找算法(一)(BF,AK,BM算法)
给定两个字符串A、B,判断B在A中是否存在,存在返回A中的下标,不存在返回-1。例:A: ABCABCAABCABCD B: ABCABCD原创 2022-07-27 17:30:16 · 829 阅读 · 0 评论 -
排序方式(8种)详解5—归并排序
1、归并排序概述 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。速度仅次于快速排序,为稳定排序算法,原理:归并操作,也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。如 设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,8,1第一...原创 2022-04-14 23:33:27 · 2695 阅读 · 1 评论 -
排序方式(8种)详解2—选择排序
目录1、选择排序概述2、选择排序分类选择排序(原始版)、选择排序(递归版)、选择排序(优化版)、选择排序(优化递归版)3、代码展示和运行结果选择排序(原始版)选择排序(递归版)选择排序(优化版)选择排序(优化递归版)留言:为作者一人拙见,仅参考使用,如有帮助,不甚荣幸。1、选择排序概述选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继原创 2022-04-10 19:04:32 · 1685 阅读 · 0 评论 -
排序方式(8种)详解3—插入排序
目录1、插入排序概述基本思想:2、插入排序分类插入排序(原始版)、插入排序(二分查找版)、插入排序(多元素插入优化版)3、代码展示及运行结果插入排序(原始版)插入排序(二分查找版)插入排序(多元素插入优化版)留言:为作者一人拙见,仅参考使用,如有帮助,不甚荣幸。1、插入排序概述一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序原创 2022-04-11 20:59:08 · 2213 阅读 · 0 评论 -
排序方式(8种)详解1—冒泡排序
目录 1、冒泡排序运行结果: 1、冒泡排序概述 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。原理:每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后...原创 2022-04-09 16:54:32 · 1796 阅读 · 0 评论 -
埃筛法(算法,java)(查找100以内的素数)
简单的素数查找方法(埃筛法)原创 2022-07-08 18:51:15 · 510 阅读 · 0 评论 -
排序方式(8种)详解4—堆排序
1、堆排序概述 指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序在代码的实现上是十分完美简洁的原理: 1、堆初始化:创建一个大根堆。 2、元素下沉:将最后一个元素和第一个元素交换,再次下沉。每次下沉均可得到一个最大 元素放于尾部。动画展示:时间和空间复杂度:...原创 2022-04-13 19:33:16 · 832 阅读 · 0 评论 -
排序方式(8种)详解6—快速排序
目录1、快速排序概述原理:图示:时间和空间复杂度:2、快速排序分类快速排序(递归版)、快速排序(递归优化版):(筛选更好的基准数,较短区间采用插入排序)3、代码实现及运行结果main函数:快速排序(递归版)快速排序(递归优化版)留言:为作者一人拙见,仅参考使用,如有帮助,不甚荣幸。1、快速排序概述 快速排序是对冒泡排序算法的一种改进。冒泡排序每次只能交换相邻的两个元素,而快速排序是跳跃式的交换,交换的距离很大,因此总的比较和交换次数少了很...原创 2022-04-20 22:01:33 · 874 阅读 · 0 评论 -
排序方式(8种)详解7—计数排序
1、计数排序概述 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)原理:1、找到数组中最大值2、建立一个max的...原创 2022-04-20 23:02:06 · 690 阅读 · 1 评论 -
打家劫舍问题(动态规划、递归,算法,java)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。3、使用递归思想可以完美解决以上问题,且代码十分简便。1、使用二维深度或更多维深度可得到近似最优解。2、使用暴力循环查找,次数足够可得到最优解。个人思想,仅供参考。...原创 2022-07-22 16:22:48 · 273 阅读 · 0 评论 -
hashcode( )的精简解释
对象如何排序? 字符串如何排序?排序的方法有很多,比如冒泡,选择排序 ,快速排序 ,计数排序 桶排序等等。(可参考https://visualgo.net/zh/sorting 了解)众所周知数字非常方便排序,只需要比较大小即可。此处我们就可以把字符串,对象转变为数字然后再进行排序。接下来我们介绍一个方法叫hash算法。hashcode(hashcode是通过hash函数得来的,即就是通过某一种算法得到的,hashcode就是在hash表中有对应的位置。)每个对象都有hashcode..原创 2021-08-18 19:49:10 · 114 阅读 · 0 评论 -
数组队列的编写
1.创建一个mylist类,构造好框架。public class Mylsit{//属性及相应的get方法和set方法//构造方法//自己编写的方法}2.定义相关属性及get和set方法int length; int size; Object[] arrvalue; final int dflength=10; //get方法 public int getLength() { return length; } ..原创 2021-08-20 17:44:39 · 86 阅读 · 0 评论 -
链表原理概述1
链表的分类:单向链表,双向链表,循环链表。 链表:由链将一个个元素连接起来,其中我们将元素称为Node节点。 Node节点:由两个部分组成: 1,数据值的变量。 2,Node next:用于存放下个节点的Node对象。 public class Node{ private Node next; private Object obj; } 链表: 属性: 头 尾节点 元素个数 public class M...原创 2021-08-20 19:26:25 · 62 阅读 · 0 评论