爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Java中的经典排序算法:快速排序、归并排序和计数排序详解(如果想知道Java中有关快速排序、归并排序和计数排序的知识点,那么只看这一篇就足够了!)

      首页 知识中心 软件开发 文章详情页

      Java中的经典排序算法:快速排序、归并排序和计数排序详解(如果想知道Java中有关快速排序、归并排序和计数排序的知识点,那么只看这一篇就足够了!)

      2025-03-05 09:10:48 阅读次数:8

      元素,复杂度,排序,数组,算法

              前言:排序算法在计算机科学中占有重要地位,不同的算法适用于不同的场景。本文将深入探讨快速排序、归并排序和计数排序。

      先让我们看一下本文大致的讲解内容:

      Java中的经典排序算法:快速排序、归并排序和计数排序详解(如果想知道Java中有关快速排序、归并排序和计数排序的知识点,那么只看这一篇就足够了!)

              对于每个排序算法,我们都会从算法简介、其原理与步骤、代码实现、时间复杂度分析、空间复杂度分析与该排序算法的应用场景这几个方面来进行讲解。

      1.快速排序 (Quicksort)

              (1)算法简介

              快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它采用分治法(Divide and Conquer),通过递归地将未排序的部分分割为较小的子数组进行排序,再将其合并。快速排序的平均时间复杂度为 O(nlog⁡n),在大多数情况下比其他 O(nlog⁡n) 的算法,如归并排序,具有更好的性能。

              当然,我相信读者读完快速排序的简介之后,对于快速排序算法的认识还是没什么认识的,接下来让我们直接带着你边学如何实现排序算法边理解该算法的内核。

       

              (2)算法的原理与步骤

              快速排序的核心思想是选择一个“基准”(pivot),并通过一系列的比较和交换操作将数组分成两部分:一部分所有元素小于基准,另一部分所有元素大于基准。然后,对这两部分分别递归地应用快速排序。具体步骤如下:

      1. 选择基准: 从数组中选择一个元素作为基准。选择基准的方法有多种,如选择第一个元素、最后一个元素、随机选择或三数取中法。

      2. 分区 (Partitioning): 通过遍历数组,将所有小于基准的元素放在基准的左边,所有大于基准的元素放在右边。

      3. 递归排序: 对基准左边和右边的子数组递归地进行快速排序。

      4. 组合: 由于分区已经确保了基准左边的元素小于基准,右边的元素大于基准,因此当递归完成后,数组已经是有序的。

       

              ——看完了上述大体如何实现快速排序算法之后,让我们从代码的层面来实现一下快速排序算法。

       

              (3)Java代码实现

      以下为Java中实现快速排序的大致代码:

      public void quickSort(int[] array) {
          int end = array.length - 1;
          quickSort(array, 0, end);
      }
      
      private void quickSortHo(int[] array, int left, int right) {
          // 如果子数组长度为1或更小,则返回(即递归终止条件)
          if (left >= right) {
              return;
          }
      
          // 查找基准元素的位置,并将数组分成两部分
          int target = findTarget(array, left, right);
          
          // 对基准元素左边的子数组进行递归排序
          quickSort(array, left, target - 1);
          
          // 对基准元素右边的子数组进行递归排序
          quickSort(array, target + 1, right);
      }
      

              从上述代码中我们可以看到我们在寻找基准元素位置的时候,使用了findTarget()方法,那么这个方法该如何实现呢?

       

              实现该方法的方式大致有三种,分别是:Hoare法、挖坑法和前后指针法。接下来我们一一进行讲解。

              【1】Hoare法

      public int findTargetH(int[] array, int left, int right) {
          // 获取中间索引并将中间元素交换到数组的最左端
          int mid = middleIndex(array, left, right);
          swap(array, left, mid);
          
          // 将最左端的元素作为基准元素
          int temp = array[left];
          int keyi = left; // 保存基准元素的初始位置
          
          // 开始从数组的两端向中间扫描
          while (left < right) {
              // 从右向左扫描,找到第一个小于基准的元素
              while (left < right && array[right] >= temp) {
                  right--;
              }
              // 从左向右扫描,找到第一个大于基准的元素
              while (left < right && array[left] <= temp) {
                  left++;
              }
              // 交换左侧找到的大于基准的元素和右侧找到的小于基准的元素
              swap(array, left, right);
          }
          
          // 将基准元素放置到最终的位置,即左、右指针相遇的位置
          swap(array, keyi, left);
          
          // 返回基准元素的位置索引
          return left;
      }
      

      解释说明:

      • middleIndex(array, left, right):假设这是一个用于计算数组中间索引的方法,以获取中间元素的位置。

      • swap(array, left, mid):将中间元素和最左端元素交换,使得基准元素(最左端元素)在处理前放到适当的位置。

      • temp:基准元素,用于比较其他元素。

      • keyi:保存基准元素的初始索引位置,以便最终将基准元素放到正确的位置。

      • while (left < right):循环扫描数组,直到左右指针相遇。

      • swap(array, left, right):当找到左侧大于基准的元素和右侧小于基准的元素时,交换它们的位置。

      • 最后一次swap:将基准元素放回到排序后应在的位置上,并返回该位置的索引。

              ——这就是Hoare实现查找基准元素位置。

       

              【2】挖坑法

      public int findTargetW(int[] array, int left, int right) {
          // 将最左端的元素作为基准元素
          int temp = array[left];
          
          // 开始从数组的两端向中间扫描
          while (left < right) {
              // 从右向左扫描,找到第一个小于基准的元素
              while (left < right && array[right] >= temp) {
                  right--;
              }
              // 将小于基准的元素移到左侧
              array[left] = array[right];
              
              // 从左向右扫描,找到第一个大于基准的元素
              while (left < right && array[left] <= temp) {
                  left++;
              }
              // 将大于基准的元素移到右侧
              array[right] = array[left];
          }
          
          // 将基准元素放置到最终的位置,即左、右指针相遇的位置
          array[left] = temp;
          
          // 返回基准元素的位置索引
          return left;
      }
      

      解释说明:

      • temp:基准元素,取自数组的最左端,用于比较和调整其他元素的位置。

      • while (left < right):主循环,通过左右指针的移动将数组分为小于基准和大于基准的两部分,直到左右指针相遇。

      • array[left] = array[right]:将右侧扫描中找到的小于基准的元素移动到左侧。

      • array[right] = array[left]:将左侧扫描中找到的大于基准的元素移动到右侧。

      • 最后一步:将基准元素放置在最终的正确位置,并返回该位置的索引,以供进一步的递归使用。

              ——这就是挖坑法实现查找基准元素位置。

       

              【3】前后指针法

      public int findTargetQ(int[] array, int left, int right) {
          // 当前基准元素的位置(初始为左边界)
          int cur = left;
          
          // 从基准元素的下一个位置开始遍历
          int prev = left + 1;
          
          // 保存基准元素的值
          int temp = array[left];
          
          // 遍历数组,直到右边界
          while (prev <= right) {
              // 如果当前元素小于基准元素且 cur 与 prev 不相等,则交换这两个元素
              if (array[prev] < temp && ++cur != prev) {
                  swap(array, cur, prev);
              }
              // 移动到下一个元素
              prev++;
          }
          
          // 将基准元素放置到最终的位置,即 cur 的位置
          swap(array, left, cur);
          
          // 返回基准元素的位置索引
          return cur;
      }
      

      解释说明:

      • cur:表示当前已经确定位置的元素的索引,初始值为左边界,负责标记小于基准元素的部分的末尾。

      • prev:用于遍历数组的索引,从基准元素的下一个位置开始。

      • temp:基准元素的值,用于与其他元素进行比较。

      • while (prev <= right):遍历数组中的元素,寻找小于基准元素的值,并将其与当前元素进行交换。

      • if (array[prev] < temp && ++cur != prev):如果当前元素小于基准元素,并且 cur 和 prev 不相等(确保不进行自我交换),则交换这两个元素。

      • swap(array, cur, left):将基准元素放置到最终的位置,即所有小于基准元素的元素的末尾。

      • return cur:返回基准元素的位置索引,用于进一步的排序。

              ——这就是前后指针法实现查找基准元素位置。

      通过上述的学习,我们就了解了如何使用Java代码来实现快速排序算法。

       

              (4)时间复杂度和空间复杂度

      • 时间复杂度

        • 平均时间复杂度: O(nlog⁡n)。快速排序在分区步骤中,每次都将数组分成两个大致相等的部分,因此递归的深度为 O(log⁡n),每层递归处理的元素数为 O(n)。

        • 最坏时间复杂度: O(n2)。当每次分区产生的子数组大小极度不均匀(如数组已经有序或逆序)时,递归深度变为 O(n)。

      • 空间复杂度: O(log⁡n)(主要为递归调用栈的空间)。由于每次递归都会消耗栈空间,因此快速排序的空间复杂度与递归的深度相关。

       

              (5)算法的应用场景

      快速排序适用于大部分需要排序的场景,尤其是:

      • 大数据集: 快速排序的平均性能优于其他排序算法,适合处理大规模数据集。

      • 内存空间有限的情况: 相较于归并排序,快速排序的空间复杂度更低,更适合内存资源有限的场景。

      • 不需要稳定排序的场景: 快速排序是一个不稳定的排序算法,不适用于需要保持相同元素相对顺序的场景。

              这样我们就学习完了快速排序算法了!!!

       

      2.归并排序 (Merge Sort)

              (1)算法简介

              归并排序是一种稳定的排序算法,采用分治策略,将待排序的数组分成若干子数组,分别对每个子数组进行排序,再将这些子数组合并成一个有序数组。归并排序的时间复杂度为 O(nlog⁡n),在数据量较大且对排序稳定性要求较高的场景中有较好的表现。

      同样,我们接下来带着你边学如何实现排序算法边理解该算法的内核。

       

              (2)算法的原理与步骤

              归并排序的基本思想是将数组分成尽可能小的子数组(每个子数组只有一个元素),然后逐步合并这些子数组,使得合并后的数组有序。具体步骤如下:

      1. 分割: 将数组分成两部分,递归地对每一部分进行归并排序。

      2. 排序并合并: 当每个子数组的长度为1时,开始合并相邻的子数组。在合并时,使用双指针技术,比较两个子数组的元素,将较小的元素放入临时数组中。

      3. 递归处理: 对左右子数组分别递归应用归并排序,直至最终将所有元素合并为一个有序数组。

              

              ——看完了上述大体如何实现归并排序算法之后,让我们从代码的层面来实现一下快速排序算法。

       

              (3)Java代码实现

      以下为Java中实现归并排序的大致代码:

      public void mergeSort(int[] array) {
          // 调用归并排序的递归方法,排序整个数组
          mergeInsertSort(array, 0, array.length - 1);
      }
      
      public void mergeInsertSort(int[] array, int left, int right) {
          // 如果子数组只有一个元素或为空,则返回(递归终止条件)
          if (left >= right) {
              return;
          }
      
          // 计算中间位置,将数组分成两部分
          int mid = (left + right) / 2;
      
          // 对左半部分进行递归排序
          mergeInsertSort(array, left, mid);
      
          // 对右半部分进行递归排序
          mergeInsertSort(array, mid + 1, right);
      
          // 合并两个已排序的子数组
          merge(array, left, mid, right);
      }
      
      public void merge(int[] array, int left, int mid, int right) {
          // 右半部分的起始位置
          int rightBegin = mid + 1;
      
          // 左半部分的起始位置
          int leftBegin = left;
      
          // 用于存放合并结果的临时数组
          int i = 0;
          int[] ret = new int[right - left + 1];
      
          // 合并两个已排序的子数组
          while (left <= mid && rightBegin <= right) {
              // 比较左右两部分的元素,将较小的元素放入临时数组
              if (array[left] < array[rightBegin]) {
                  ret[i++] = array[left++];
              } else {
                  ret[i++] = array[rightBegin++];
              }
          }
      
          // 将左半部分剩余的元素添加到临时数组中
          while (left <= mid) {
              ret[i++] = array[left++];
          }
      
          // 将右半部分剩余的元素添加到临时数组中
          while (rightBegin <= right) {
              ret[i++] = array[rightBegin++];
          }
      
          // 将临时数组中的元素复制回原数组的相应位置
          for (int j = 0; j < ret.length; j++) {
              array[j + leftBegin] = ret[j];
          }
      }
      

      解释:

      • mergeSort(int[] array):这是归并排序的入口方法,它调用 mergeInsertSort 方法对整个数组进行排序。

      • mergeInsertSort(int[] array, int left, int right):这是归并排序的递归方法,递归地将数组分成更小的部分并排序,然后调用 merge 方法合并已排序的子数组。

      • merge(int[] array, int left, int mid, int right):这是合并两个已排序的子数组的方法。它创建一个临时数组 ret,将左右两部分按顺序合并到 ret 中,然后将合并后的结果复制回原数组。

              ——这样我们就了解了如何使用Java代码来实现归并排序算法。

       

              (4)时间复杂度和空间复杂度

      • 时间复杂度: O(nlog⁡n)。每次分割将数组对半分,深度为 O(log⁡n),合并过程需要遍历整个数组,因此时间复杂度为 O(nlog⁡n)。

      • 空间复杂度: O(n)。归并排序需要额外的空间来存储临时数组,用于合并过程中临时存放子数组的元素。

              

              (5)算法的应用场景

      归并排序的稳定性和时间复杂度使其适用于以下场景:

      • 稳定性要求高的排序: 归并排序是一种稳定排序算法,适用于对相同值的元素相对顺序有要求的场景。

      • 外部排序: 归并排序适用于处理超大数据集的外部排序,由于其稳定性和性能,尤其适用于磁盘文件的排序操作。

      • 数据集较大且未全部加载到内存: 在处理大规模数据时,归并排序由于其分割和合并的特性,可以有效地处理不能一次性加载到内存的数据。

              ——这样我们学习完了如何在Java中实现归并算法。

       

      3.计数排序 (Counting Sort)

              (1)算法简介

              计数排序是一种非比较排序算法,主要用于对整数进行排序。它通过计算每个元素在数组中出现的次数来确定其在排序后数组中的位置。这种排序算法适用于元素范围较小且数据量较大的场景。

      同样,我们接下来带着你边学如何实现排序算法边理解该算法的内核。

       

              (2)算法的原理与步骤

              计数排序的基本思想是创建一个计数数组,通过统计原始数组中每个元素的出现次数来确定它们在排序后数组中的正确位置。具体步骤如下:

      1. 计算最大值和最小值: 确定数组中的最大值和最小值,进而决定计数数组的大小。

      2. 计数: 创建一个计数数组,将每个元素出现的次数记录在计数数组中。

      3. 累加计数: 对计数数组中的值进行累加,以便确定每个元素的最终位置。

      4. 构建排序数组: 遍历原始数组,通过计数数组确定每个元素在排序后数组中的位置,构建最终的有序数组。

              ——接下来让我们使用代码来实现一下计数排序。

       

              (3)Java代码实现

      public void countSort(int[] array) {
          // 初始化最小值和最大值为数组的第一个元素
          int min = array[0];
          int max = array[0];
          
          // 遍历数组,找到最小值和最大值
          for (int i = 0; i < array.length; i++) {
              if (array[i] < min) {
                  min = array[i];
              }
              if (array[i] > max) {
                  max = array[i];
              }
          }
          
          // 创建计数数组,用于统计每个元素出现的次数
          int[] count = new int[max - min + 1];
          
          // 统计数组中每个元素出现的次数
          for (int i = 0; i < array.length; i++) {
              count[array[i] - min]++;
          }
          
          // 将排序后的元素放回原数组
          int arrayIndex = 0;
          for (int i = 0; i < count.length; i++) {
              // 对计数数组进行处理,将每个元素根据其计数放入原数组中
              while (count[i] != 0) {
                  array[arrayIndex++] = i + min;
                  count[i]--;
              }
          }
      }
      

      解释:

      • int min = array[0]; int max = array[0];:初始化最小值和最大值为数组的第一个元素。

      • for (int i = 0; i < array.length; i++):遍历数组,找到最小值和最大值。

      • int[] count = new int[max - min + 1];:创建计数数组 count,其长度为 max - min + 1,用来存储每个值的出现次数。

      • for (int i = 0; i < array.length; i++):遍历数组并填充计数数组。

      • count[array[i] - min]++:更新计数数组中的值,表示 array[i] 出现的次数。

      • for (int i = 0; i < count.length; i++):遍历计数数组,并将排序后的元素放回原数组中。

      • while (count[i] != 0):根据计数数组的值将元素放入原数组中,每个元素按照计数的次数放入对应的位置。

              ——这样我们就实现了计数排序算法了!!!

       

              (4)时间复杂度和空间复杂度

      • 时间复杂度: O(n+k)O(n + k)O(n+k),其中 nnn 是数组的长度,kkk 是数组中元素的范围(最大值与最小值之间的差值)。

      • 空间复杂度: O(k)O(k)O(k)。计数排序需要额外的计数数组,空间复杂度与元素的范围成正比。

       

              (5)算法的应用场景

      计数排序的特点使其适用于以下场景:

      • 数据范围较小的整数排序: 计数排序适合整数范围较小的排序任务,如考试成绩、年龄等。

      • 需要稳定排序的场景: 计数排序是一种稳定的排序算法,适用于需要保持相同元素相对顺序的场景。

      • 数据分布相对均匀: 如果数据分布极度不均匀,计数排序的效率会大大降低,因此适用于数据分布较为均匀的情况。

              ——这样我们学习完了如何在Java中实现计数排序算法。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/2302_80198073/article/details/141786223,作者:秋刀鱼不做梦,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Java中Thread类的基本认识与使用(如果想知道Java中有关Thread类的基本知识,那么只看这一篇就足够了!)

      下一篇:“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

      相关文章

      2025-05-19 09:04:14

      《剑指Offer》搜索算法题篇——更易理解的思路~

      《剑指Offer》搜索算法题篇——更易理解的思路~

      2025-05-19 09:04:14
      算法
      2025-05-19 09:04:14

      复杂度的OJ练习

      复杂度的OJ练习

      2025-05-19 09:04:14
      代码 , 复杂度 , 思路 , 数组 , 算法
      2025-05-19 09:04:14

      背包问题——“0-1背包”,“完全背包”(这样讲,还能不会?)

      背包问题——“0-1背包”,“完全背包”(这样讲,还能不会?)

      2025-05-19 09:04:14
      动态规划 , 算法
      2025-05-16 09:15:24

      Redis Set集合

      Redis Set集合

      2025-05-16 09:15:24
      set , 个数 , 元素 , 示例 , 集合
      2025-05-16 09:15:24

      如何将一串数字用函数的方法倒过来(C语言)

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24
      函数 , 数字 , 数组
      2025-05-16 09:15:24

      jQuery遍历对象、数组、集合

      jQuery遍历对象、数组、集合

      2025-05-16 09:15:24
      jQuery , 对象 , 数组 , 遍历 , 集合
      2025-05-16 09:15:17

      多源BFS问题(4)_地图分析

      多源BFS问题(4)_地图分析

      2025-05-16 09:15:17
      单元格 , 算法 , 网格 , 距离
      2025-05-16 09:15:17

      递归,搜索,回溯算法(3)之穷举,暴搜,深搜,回溯,剪枝

      递归,搜索,回溯算法(3)之穷举,暴搜,深搜,回溯,剪枝

      2025-05-16 09:15:17
      回溯 , 子集 , 数组 , 算法 , 递归
      2025-05-16 09:15:17

      多源BFS问题(2)_飞地的数量

      多源BFS问题(2)_飞地的数量

      2025-05-16 09:15:17
      bfs , grid , 单元格 , 算法
      2025-05-16 09:15:17

      BFS解决最短路问题(4)_为高尔夫比赛砍树

      BFS解决最短路问题(4)_为高尔夫比赛砍树

      2025-05-16 09:15:17
      BFS , lt , 复杂度 , 算法
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5232984

      查看更多

      最新文章

      复杂度的OJ练习

      2025-05-19 09:04:14

      Redis Set集合

      2025-05-16 09:15:24

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24

      【数据结构】详细介绍串的简单模式匹配——朴素模式匹配算法

      2025-05-14 10:33:31

      超级好用的C++实用库之sha256算法

      2025-05-14 10:33:25

      30天拿下Rust之向量

      2025-05-14 10:33:16

      查看更多

      热门文章

      Python:关于有序序列元素查找

      2023-02-13 07:38:09

      Arrays类的使用

      2023-06-08 06:23:00

      数据结构与算法之七 栈

      2022-11-17 12:37:20

      python学习(6)——列表元素的添加、删除、修改及排序

      2023-05-22 03:00:29

      C++ 实现排序问题:时间复杂度O(n),空间复杂度O(1)

      2023-03-14 09:17:29

      20.6.5快速排序头文件的使用

      2023-03-20 02:06:43

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题

      JavaScript DOM操作与事件处理

      BC42 小乐乐定闹钟

      伪代码规范

      【C++二分查找 贪心 决策包容性 双指针】826. 安排工作以达到最大收益|1708

      【C++二分查找 前缀和 】1292. 元素和小于等于阈值的正方形的最大边长|1734

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号