![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 65
敲代码痛苦吗?
成功是奋斗出来的
展开
-
分治算法——快速排序
文章目录1、分解:2、基准元素的选取3、算法描述4、划分方法——过程设计5、算法分析1、分解:分——选定一个元素作为基准元素,小于基准元素的放左边,大于基准元素的放左边,大于基准元素的放右边a1 a2 a3 …基准…an-1 an治——递归求解子问题2、基准元素的选取-(a)取第一个元素-(b)取最后一个元素-(c)取位于中间位置的元素-(d)三者取中的元素-(e)取位于low和high之间的随机数3、算法描述4、划分方法——过程设计(1)方法1:基准元素不断调整位置,最后调原创 2021-12-13 20:43:59 · 384 阅读 · 1 评论 -
分治算法——合并排序
文章目录1、算法思想2、算法描述3、算法分析1、算法思想合并排序是采用分值策略实现对n个元素进行排序的算法,是分治法的一个典型应用和完美体现。它是一种平衡、简单的二分分治策略,其计算过程分为三大步:(1)分解:将待排序元素分成大小大致相同的两个子序列。(2)求解子问题:用合并排序法分别对两个子序列递归地进行排序。(3)合并:将排好序的有序子序列进行合并,得到符合要求的有序序列。2、算法描述递归形式def mergeSort(arr,left,right): if left <原创 2021-12-13 18:45:26 · 1680 阅读 · 0 评论 -
分治算法——二分查找
文章目录1、基本思想2、分治法的解题步骤3、二分查找3.1、问题描述3.2、解决方法---分治法3.3、伪码描述4、算法分析1、基本思想将一个难以直接解决的大问题,分解成一些规模较小的相同子问题,各子问题相互独立;递归地解决各子问题,将子问题的解归并成原问题的解。2、分治法的解题步骤步骤1:分解 ——即将问题分解为若干个规模较小、相互独立、与原问题形式相同的子问题;(分解的时候分解到停止条件的时候停止,一般是分解到规模为一的时候停止)步骤2:治理步骤2-1:求解各个子问题(递归)步骤原创 2021-12-13 13:50:35 · 2779 阅读 · 0 评论 -
动态规划(0-1背包问题)
文章目录1.问题给定的已知:2.所求目标:3.数学模型:4.最优子结构分析:5.建立最优值的递归关系式:6.自底向上求解:1)数据结构:2)程序代码:3)测试数据:4)结果分析:7.根据相关信息构造最优解:1)程序代码:2)测试数据及结果:3)结果分析:8.总结:1.问题给定的已知:有编号分别为1,2,3,4,5的物件物品,他们的重量分别是2,2,6,5,4,他们的价值分别是6,3,5,4,6,先给一格承重为10的背包。2.所求目标:如何让背包里装入的物品具有最大的价值总和3.数学模型:①建立模原创 2021-11-09 13:47:28 · 1954 阅读 · 0 评论 -
快速排序算法
快速排序(Quicksort)是对冒泡排序算法的一种改进。1、排序流程快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的原创 2021-10-20 10:34:55 · 98 阅读 · 0 评论