随笔分类 -  算法及数据结构

摘要:s005-排序算法的稳定性及排序总结 稳定性 如果一个数组[1,1,0,0,0,2,3,2] 最终排序后结果肯定是[0,0,0,1,1,2,2,3] 如果排在前面的0在排序后也放在前面,如果排在前面的1在排序后也放在前面... 即排序后值相等的数保持了排序前的顺序,认为该排序是稳定排序 例如学生类有 阅读全文
posted @ 2022-10-30 11:54 Oh,mydream! 阅读(95) 评论(0) 推荐(0)
摘要:s004-桶排序 概念 之前写的博客中讲述的排序算法,例如选择排序,冒泡排序,插入排序,快排,归并和堆排序都是基于比较的算法 而桶排序不是基于比较的算法,而是基于数据状态的算法 桶排序(Bucket sort)或者箱排序是一个排序算法,工作的原理是将数组分到有限的桶里。每个桶再个别排序(有可能再使用 阅读全文
posted @ 2022-10-30 10:28 Oh,mydream! 阅读(41) 评论(0) 推荐(0)
摘要:s002-认识O(NlogN)的排序 什么是Master公式? T(N)=a*T(N/b)+O(N^d) 母问题的数据量是N级别,即母问题是N规模的;子问题是N/b的规模,a是子问题的个数, O(N^d)是除了子问题之外剩下问题的复杂度是多少,满足这个条件的递归公式可以通过master公式来统一求解 阅读全文
posted @ 2022-10-21 20:37 Oh,mydream! 阅读(47) 评论(0) 推荐(0)
摘要:03-堆栈 什么是堆栈 堆栈的抽象数据类型 数据对象集:一个有0个或多个元素的有穷线性表 操作集:长度为MaxSize的堆栈S ∈ Stack, 堆栈元素item ∈ ElementType Stack CreateStack(int MaxSize): 生成空堆栈,其最大的长度为MaxSize i 阅读全文
posted @ 2022-09-20 20:28 Oh,mydream! 阅读(30) 评论(0) 推荐(0)
摘要:02-线性表和广义表 线性表 线性表的抽象数据类型描述 类型名称:线性表 数据对象集:线性表是n(≥0)个元素组成的有序序列(a1,a2,...,an) 操作集:线性表L∈List,整数i表示位置,元素X∈ElementType, 线性表基本操作有: List MakeEmpty(): 初始化一个空 阅读全文
posted @ 2022-09-20 11:15 Oh,mydream! 阅读(89) 评论(0) 推荐(0)
摘要:最大子列和问题 概述 本文主要讲解最大子列和问题的求解 什么是最大子列和问题?有一个整数数组{A1, A2,A3,...,An} 求函数f(i,j)=max(0,∑Ak), k∈[i,j] 的值 简单来说,求一个数组所有子序列中和最大的子序列的和的值 方法 简单来说有四种解决方法,分别为三重循环,二 阅读全文
posted @ 2022-09-19 19:51 Oh,mydream! 阅读(59) 评论(0) 推荐(0)
摘要:数据结构与算法 什么是数据结构 定义 数据结构没有标准的定义 中文维基百科:数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法 数据结构是数据对象在计算机中的组织方式 数据对象必定与一系列加在其上的操作相关联 完成这些操作的方法就是算法 描述 描述数据结构的方 阅读全文
posted @ 2022-09-16 20:59 Oh,mydream! 阅读(101) 评论(0) 推荐(0)
摘要:如何理解异或 什么是异或,就是是否不同 与 & 两个都为真结果为真 或 | 两个有一个为真结果为真 非 !真的结果为假,假的结果为真 异或 ^ 两个逻辑值不同结果为真,两个逻辑值相同结果为假,不要记异或,就记住异 package com.example.exam.array; public clas 阅读全文
posted @ 2022-01-26 20:29 Oh,mydream! 阅读(718) 评论(0) 推荐(0)
摘要:二分法 东西其实并不难,如果你理解不了,说明教的不好 二分法实际是一个比较简单的方法 基础的原理:在一个排序好的数组中,寻找一个值,可以看中间元素值的大小,跟目标值进行比较,确定以一个搜索范围,每次搜索范围可以减半,搜索效率大大提升。 二分法一个写的比较清楚的视频 分享给大家: leetcode34 阅读全文
posted @ 2021-12-02 17:38 Oh,mydream! 阅读(127) 评论(0) 推荐(0)