
算法
算法
淘淘图兔兔呀
这个作者很懒,什么都没留下…
展开
-
尚硅谷Java数据结构与算法——076 排序算法时间复杂度比较
相关术语解释:稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。n: 数据规模k: “桶”的个数In-place: 不占用额外内存Out-place: 占用额外内存...原创 2021-06-25 08:37:10 · 114 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——072 基数排序
基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序。原创 2021-06-24 08:51:20 · 193 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——069 归并排序
代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-23 8:27 */public class MergeSort { public static void main(String[] args) { int[] arr = {8, 4, 5, 7, 1, 3, 6, 2}; mergeSort(arr, 0, arr原创 2021-06-23 14:01:56 · 212 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——066 快速排序
代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-22 16:29 */public class QuickSort { public static void main(String[] args) { int[] arr = {-9, 78, 0, 23, -567, 70}; quickSort(arr, 0, a原创 2021-06-22 22:09:54 · 336 阅读 · 2 评论 -
尚硅谷Java数据结构与算法——063 希尔排序
代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-17 10:13 */public class ShellSort { public static void main(String[] args) { int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; System.out.prin原创 2021-06-17 15:47:44 · 160 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——060 插入排序
代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-16 10:33 */public class InsertSort { public static void main(String[] args) { int[] arr = {101, 34, 119, 1}; System.out.printf("排序前的数组:"原创 2021-06-16 14:21:49 · 131 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——057 选择排序
代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-16 8:40 */public class SelectSort { public static void main(String[] args) { int[] arr = {101, 34, 119, 1}; System.out.printf("排序前的数组:")原创 2021-06-16 10:13:22 · 102 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——054 冒泡排序
冒泡排序代码实现package com.atguigu.sort;import java.util.Arrays;/** * @author WHT * @create 2021-06-15 11:15 */public class BubbleSort { public static void main(String[] args) { int arr[] = {3, 9, -1, 10, -2}; System.out.printf("排序原创 2021-06-15 11:50:02 · 1207 阅读 · 2 评论 -
尚硅谷Java数据结构与算法——051 时间频度和时间复杂度
时间频度一个算法花费的时间与算法中语句的执行次数成正比,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。时间复杂度一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作 T(n)=O( f(n) ),称O( f(n) ) 为算法的渐进时间复杂度,简称时间复杂度。原创 2021-06-15 10:11:17 · 1202 阅读 · 2 评论 -
尚硅谷Java数据结构与算法——050 排序算法介绍和分类
常见排序算法的分类原创 2021-06-15 09:27:13 · 1125 阅读 · 2 评论 -
尚硅谷Java数据结构与算法——047 八皇后问题
代码实现package com.atguigu.recursion;/** * @author WHT * @create 2021-06-14 9:00 */public class Queue8 { // 定义一个max表示共有多少个皇后。 int max = 8; // 定义数组array, 保存皇后放置位置的结果,比如 arr = {0, 4, 7, 5, 2, 6, 1, 3}。 int[] array = new int[max]; sta原创 2021-06-14 11:47:05 · 245 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——045迷宫问题
代码实现package com.atguigu.recursion;/** * @author WHT * @create 2021-06-13 10:00 */public class MiGong { public static void main(String[] args) { // 先创建一个二维数组,模拟迷宫地图。 int[][] map = new int[8][7]; // 使用 1 表示墙。 // 第一原创 2021-06-13 12:24:20 · 282 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——039中缀表达式转后缀表达式
代码实现package com.atguigu.stack;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * @author WHT * @create 2021-06-11 9:22 */public class PolandNotation { public static void main(String[] args) { // 完成将一个中缀表达原创 2021-06-12 21:13:03 · 206 阅读 · 1 评论 -
尚硅谷Java数据结构与算法——037逆波兰计算器
代码实现package com.atguigu.stack;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * @author WHT * @create 2021-06-11 9:22 */public class PolandNotation { public static void main(String[] args) { // 先定义给逆波兰表达原创 2021-06-11 11:02:49 · 274 阅读 · 2 评论 -
尚硅谷Java数据结构与算法——035栈实现综合计算器(可以处理多位数的运算)
代码实现ArrayStack2类package com.atguigu.stack;/** * @author WHT * @create 2021-06-09 21:05 */// 【王】 一个栈实现,比视频方法少新建一个栈。public class Calculator { public static void main(String[] args) { // 给出待计算的表达式字符串。 String expression = "70+2*6原创 2021-06-10 11:41:31 · 220 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——034栈实现综合计算器(只能处理一位数的运算)
代码实现package com.atguigu.stack;/** * @author WHT * @create 2021-06-09 21:05 */// 【王】 比视频方法少新建一个栈。public class Calculator { public static void main(String[] args) { // 给出待计算的表达式字符串。 String expression = "3+2*6-2"; // 只能处理一位数的运原创 2021-06-10 10:55:12 · 192 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——030栈
定义一个 ArrayStack 类// 定义一个 ArrayStack 表示栈。class ArrayStack { private int maxSize; // 栈的大小。 private int[] stack; // 数组,数组模拟栈,数据就放在该数组。 private int top = -1; // top表示栈顶,初始化为-1。 // 构造器。 public ArrayStack(int maxSize) { thi原创 2021-06-08 13:20:10 · 128 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——029约瑟夫问题
约瑟夫问题约瑟夫问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。代码实现以下代码写在CircleSingleLinkedList类里面。// 根据用户的输入,计算出小孩出圈的顺序。 /** * * @param startNo * 表示从第几个小孩开始数数原创 2021-06-07 16:31:51 · 174 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——027环形的单链表
定义节点类// 创建一个Boy类,表示一个节点。class Boy { private int no; // 编号。 private Boy next; // 指向下一个节点,默认null。 // 构造器。 public Boy(int no) { this.no = no; } public int getNo() { return no; } public void setNo(int no)原创 2021-06-07 15:11:45 · 106 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——024双向链表
定义节点类// 定义HeroNode2, 每个 HeroNode2 对象就是一个节点。class HeroNode2 { public int no; public String name; public String nickname; public HeroNode2 next; // 指向下一个节点。 public HeroNode2 pre; // 指向前一个节点。(与单链表不同的地方) // 创建构造器 public HeroN原创 2021-06-06 18:15:53 · 131 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——023单链表百度面试题
从尾到头打印单链表 【百度。方式1:反向遍历;方式2:Stack栈。】// 可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果。 public static void reversePrint(HeroNode head) { // 空链表,不能打印。 if (head.next == null) { return; } // 创建一个栈,将各个节点压入栈。 .原创 2021-06-05 14:56:54 · 147 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——022单链表腾讯面试题
单链表的反转【腾讯面试题,有点难度】// 【王】 比视频方法少定义一个变量。 public static void reversedList(HeroNode head) { // 如果当前链表为空,或者只有一个节点,无需反转,直接返回。 if (head.next == null || head.next.next == null) { return; } // 定义一个辅助的指针(变量),帮助我们遍历原.原创 2021-06-04 09:55:38 · 139 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——021单链表新浪面试题
求单链表中有效节点的个数。//方法:获取到单链表的节点的个数(如果是带头结点的链表,需求不统计头节点) /** * * @param head 链表的头节点 * @return 返回的就是有效节点的个数 */ public static int getLength(HeroNode head) { // 判断是否为空。 if (head.next == null) { return 0; .原创 2021-06-03 11:59:13 · 143 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——016单链表
定义节点类// 定义HeroNode, 每个 HeroNode 对象就是一个节点。class HeroNode { public int no; public String name; public String nickname; public HeroNode next; // 指向下一个节点。 // 创建构造器 public HeroNode(int hNo, String hName, String hNickname) {原创 2021-06-03 00:38:37 · 146 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——014数组模拟环形队列
数组模拟环形队列思路分析如下:front 变量的含义做一个调整: front 就指向队列的第一个元素,也就是说 arr[front] 就是队列的第一个元素。front 的初始值 = 0。rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置,因为希望空出一个空间做为约定。rear 的初始值 = 0。当队列满时,条件是:(rear + 1) % maxSize == front。对队列为空的条件是:rear == front。当我们这样分析,队列中有效的数据的个数:(r原创 2021-06-01 17:26:20 · 310 阅读 · 5 评论 -
尚硅谷Java数据结构与算法——012数组模拟队列
代码实现package com.atguigu.queue;/** * @author WHT * @create 2021-06-01 11:01 */public class ArrayQueueDemo { public static void main(String[] args) { }}//使用数组模拟队列-编写一个ArrayQueue类class ArrayQueue { private int maxSize; // 表示数组的最大容原创 2021-06-01 14:07:06 · 164 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——007稀疏数组
代码实现package com.atguigu.sparsearray;/** * @author WHT * @create 2021-05-31 17:16 */public class SparseArray { public static void main(String[] args) { //创建一个原始的二维数组 11 * 11 //0:表示没有棋子,1:表示黑子,2:表示蓝子 int chessArr1[][] = n.原创 2021-05-31 17:10:04 · 239 阅读 · 0 评论 -
尚硅谷Java数据结构与算法——006线性结构和非线性结构
线性结构线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。线性结构常见的有:数组、队列、链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,树结构,图结构。...原创 2021-05-31 16:21:31 · 3475 阅读 · 0 评论 -
算法工程师
算法工程师的工作内容将问题抽象成可能的算法方案。算法方案的选择。实现方案。参考资料:https://www.bilibili.com/video/BV1JE411J7vB?from=search&seid=8633462094434022722原创 2021-01-07 15:20:55 · 108 阅读 · 0 评论 -
算法(第4版)——1.1.6 静态方法
“本书中的所有Java程序要么是数据类型的定义(详见1.2节),要么是一个静态方法库。”“在许多语言中,静态方法被称为函数。”“修饰符static将这类方法与1.2节的实例方法区别开来。当讨论两类方法共有的属性时我们会使用不加定语的方法一词。”...原创 2021-05-08 10:38:27 · 79 阅读 · 0 评论 -
算法(第4版)——1.1.5 数组
1.1.5.3 使用数组原创 2021-05-07 22:42:29 · 75 阅读 · 0 评论 -
算法(第4版)——1.1.3 语句
1.1.3.5 break与continue语句break语句:立即从循环中退出。continue语句:立即开始下一轮循环。原创 2021-05-07 22:07:18 · 73 阅读 · 0 评论 -
算法(第4版)——1.1.2 原始数据类型与表达式
“数据类型就是一组数据和对其所能进行的操作的集合。”“只要能够指定值域和在此值域上的操作,就能定义一个数据类型。”原创 2021-05-07 22:04:13 · 78 阅读 · 0 评论 -
算法(第4版)——1.1.1 Java程序的基本结构
“一段Java程序(类)或者是一个静态方法(函数)库,或者定义了一个数据类型。”要创建静态方法库和定义数据类型,会用到下面五种语法,它们是Java语言的基础,也是大多数现代语言所共有的。原始数据类型:它们在计算机程序中精确地定义整数、浮点数和布尔值等。它们的定义包括取值范围和能够对相应的值进行的操作,它们能够被组合为类似于数学公式定义的表达式。语句:语句通过创建变量并对其赋值、控制运行流程或者引发副作用来进行计算。我们会使用六种语句:声明、赋值、条件、循环、调用和返回。数组:数组是多个同种数据类型原创 2021-05-05 23:29:50 · 110 阅读 · 0 评论 -
算法(第4版)——1.1 基础编程模型
“我们把描述和实现算法所用到的语言特性、软件库和操作系统特性总称为基础编程模型。”原创 2021-05-05 22:52:49 · 103 阅读 · 0 评论 -
算法(第4版)——第1章 基础
“本书的目的是研究多种重要而实用的算法,即适合用计算机实现的解决问题的方法。”“和算法关系最紧密的是数据结构,即便于算法操作的组织数据的方法。”算法“编写一段计算机程序一般都是实现一种已有的方法来解决某个问题。”“是这种方法而非计算机程序本身描述了解决问题的步骤。”“在计算机科学领域,我们用算法这个词来描述一种有限、确定、有效的并适合用计算机程序来实现的解决问题的方法。”“在编写庞大或者复杂的程序时,理解和定义问题、控制问题的复杂度和将其分解更容易解决的子问题需要大量的工作。”“实现这些基础算原创 2021-02-28 18:39:15 · 138 阅读 · 0 评论