随笔分类 - 架构设计类与算法
开放地址法(Open Addressing,如线性探测、二次探测等)
摘要:概述 开放地址法,也被称为开放寻址或闭散列,是哈希表处理冲突的一种方法。当哈希函数计算出的哈希地址被占用时,开放地址法会按照一定的策略在线性存储空间上探测其他位置,直到找到一个空位置来存储数据。以下是关于开放地址法的详细解释和几种常见的探测方法: 1. 基本概念: 开放地址法:通过系统的方法找到数组
阅读全文
常用的搜索算法之哈希搜索(Hashing Search)
摘要:哈希搜索(Hashing Search)是基于哈希表(Hash Table)的搜索方法。哈希表通过哈希函数(Hash Function)将键(Key)映射到数组的某个索引上,从而实现快速查找。下面我将解释哈希搜索的实现原理,给出一步步的数据演示,并最后提供Java代码示例。 实现原理 哈希函数:哈希
阅读全文
常用的搜索算法之二分搜索(Binary Search)
摘要:二分搜索(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,
阅读全文
常用的搜索算法之线性搜索(Linear Search)
摘要:线性搜索(Linear Search)是一种非常简单的搜索算法,它按顺序遍历列表(或数组)中的每个元素,直到找到所需的元素或遍历完整个列表。下面我会描述线性搜索的实现原理、一步步数据演示,并给出Java代码示例。 实现原理 线性搜索的原理是遍历整个数据集合(通常是一个数组或列表),对集合中的每个元素
阅读全文
常见搜索算法的分类与特性
摘要:搜索算法的分类与特性 搜索算法是用于在数据集中查找特定元素的算法。以下是几种常见的搜索算法及其起源、原理、时间复杂度和空间复杂度的概述: 线性搜索(Linear Search) 起源:线性搜索是一种最基础的搜索算法,其起源可以追溯到计算机科学的早期。 原理:线性搜索逐一比较数据集中的每个元素,直到找
阅读全文
常见的算法分类方式
摘要:算法分类是一个广泛的主题,因为存在许多不同类型的算法,它们各自服务于不同的目的和领域。然而,以下是一些常见的算法分类方式: 基本算法分类: 搜索算法:如线性搜索、二分搜索、哈希搜索、深度优先搜索(DFS)、广度优先搜索(BFS)等。 排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序、基数
阅读全文
常用的排序算法之基数排序(Radix Sort)
摘要:基数排序(Radix Sort)起源或原理 基数排序(Radix Sort)是非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。它按照从低位到高位(或者从高位到低位)依次对待排序的元素进行排序,直到所有的位数都被排序完毕。基数排序的思想借鉴了人类的计数排序法,即按照
阅读全文
常用的排序算法之桶排序(Bucket Sort)
摘要:原理 桶排序(Bucket Sort)是计数排序的升级版。它利用了函数的映射关系,将待排序的数据分散到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。 定义 桶排序是分布式排序算法,将数据分到有限数量的桶子里。每个
阅读全文
常用的排序算法之计数排序(Counting Sort)
摘要:计数排序(Counting Sort) 原理 计数排序(Counting Sort)的起源并不明确指向某一个特定的发明者或时间点,但它作为一种简单直观的排序算法,在计算机科学中得到了广泛的应用。计数排序的基本思想是通过统计数组中每个元素出现的次数,来确定其在排序后数组中的位置。 定义 计数排序是一种
阅读全文
常用的排序算法之堆排序(Heap Sort)
摘要:堆排序(Heap Sort)起源 堆排序的概念由J.W.J. Williams在1964年提出,并在计算机科学中得到了广泛的应用。它利用了堆这种数据结构所具备的性质来实现排序。堆通常是一个可以被看做一棵完全二叉树的数组对象。 定义 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算
阅读全文
常用的排序算法之快速排序(Quick Sort)
摘要:快速排序(Quick Sort)起源 快速排序是由英国计算机科学家托尼·霍尔(Tony Hoare)在1960年提出的一种排序算法。它的基本思想是分治法(Divide and Conquer)的应用。 定义 快速排序是一种高效的排序算法,它采用分治法的策略,将一个大的数组分割成两个小的子数组,并使左
阅读全文
常用的排序算法之归并排序(Merge Sort)
摘要:归并排序(Merge Sort) 起源 归并排序(Merge Sort)的算法是由约翰·冯·诺依曼(John von Neumann)在1945年提出的。但在实际的计算机编程中,归并排序通常被认为是由计算机科学家罗伯特·塞奇威克(Robert Sedgewick)在《算法》(Algorithms)一
阅读全文
常用的10种排序算法概述
摘要:前言 时间复杂度和空间复杂度是算法分析中非常重要的两个概念,它们分别用于衡量算法执行所需的时间和空间资源。 一、时间复杂度 定义: 时间复杂度是指执行算法所需要的计算工作量,它描述了算法运行时间与输入数据规模之间的关系。时间复杂度通常用大O符号(Big O notation)来表示,即O(f(n))
阅读全文
常用的排序算法之希尔排序(Shell Sort)
摘要:希尔排序(Shell Sort) 起源 希尔排序(Shell Sort)是Donald Shell于1959年提出的一种基于插入排序的算法。它是对直接插入排序算法的一种更高效的改进版本,也称为“缩小增量排序”。 定义 希尔排序是插入排序的一种更高效的改进版本,也称为缩小增量排序。希尔排序是非稳定排序
阅读全文
常用的排序算法之插入排序(Insertion Sort)
摘要:插入排序(Insertion Sort) 原理 插入排序(Insertion Sort)的起源并不明确,但它是计算机科学中最早提出的排序算法之一。它的工作原理类似于我们日常整理扑克牌或书籍时的过程:我们创建一个新的有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 定义 插入
阅读全文
常用的排序算法之选择排序(Selection Sort)
摘要:选择排序(Selection Sort) 原理 选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。这种排序方法是不稳定的排序方法。选择排序的起源并不明确,但它是计
阅读全文
常用的排序算法之冒泡排序(Bubble Sort)
摘要:冒泡排序(Bubble Sort) 原理 冒泡排序(Bubble Sort)是一种简单的排序算法,其名字来源于越小的元素会经由交换慢慢“浮”到数列的顶端(或越大的元素“沉”到底端),就如同气泡从水底冒到水面一样。虽然这个算法不是最高效的,但由于其实现简单直观,常常用于教学目的。 定义 冒泡排序是一种
阅读全文
满二叉树的二分K-means聚类并行推荐算法思路之二
摘要:对满二叉树的二分K-means聚类并行推荐算法这个主题我写二个实现思路,本文是第二个方案,若想查看方案一请移步到满二叉树的二分K-means聚类并行推荐算法 下面实现一个基于满二叉树的二分K-means聚类并行推荐算法,并应用于MovieLens数据集以提高推荐系统的准确性和可扩展性,可以按照以下步
阅读全文
满二叉树的二分K-means聚类并行推荐算法
摘要:实现方案和思路 算法设计 二分K-means算法迭代: 初始化:随机选择一个中心点作为根节点,然后对该中心点应用K-means算法(K=2),得到两个子簇。 迭代:对每个子簇重复应用K-means算法(K=2),直到满足停止条件(如达到预设的树深度或簇内凝聚度低于某阈值)。 停止条件:簇内凝聚度(如
阅读全文
自平衡的树形数据结构
摘要:自平衡的树形数据结构是一类特殊的树形数据结构,它们通过自动调整树的结构来保持树的平衡,从而确保查询、插入和删除等操作的时间复杂度保持在对数级别。以下是几种常见的自平衡的树形数据结构: AVL树(Adelson-Velsky和Landis树): AVL树是一种自平衡的二叉搜索树,其中任何节点的两个子树
阅读全文
浙公网安备 33010602011771号