
算法与数据结构
文章平均质量分 86
夜幕将至.
我很懒,还没有添加简介!
展开
-
分而治之策略-第m小的数(c++、java、python)
第m小的数问题分析代码问题给定一个无重复元素的无序数组,求其第m小的元素。如:{1,5,3,6,2,8,5} 求其第3小的元素答案:3分析直观可以考虑通过对数组进行排序求解,而基于排序算法的时间复杂度下界为O(nlogn)O(nlogn)O(nlogn),即通过排序算法求解的时间复杂度不会低于O(nlogn)O(nlogn)O(nlogn)。借助快速排序思想,每次遍历作为主元素的所在的分割位置确定后固定,当前子数组排序完成后,设主元素的索引为nnn,则nnn即为该数组中第n+1n+1n+1原创 2021-08-29 16:26:52 · 2299 阅读 · 0 评论 -
分而治之策略-快速排序(c++、java、python)
快速排序问题分析时间复杂度空间复杂度代码问题给定一个无序数组arrarrarr,对其排序。分析类似于归并排序在于都是使用分而治之思想,借由递归与合并的方式完成。数组划分,即对于待排序的数组,从中任意选取一个元素作为主元素,并以该元素为分割,使得它左侧的元素均小于它,它右侧的元素均大于它(左右测元素无需有序),具体步骤为随机选取一个元素作为主元素main_elementmain\_elementmain_element,将其放在数组最后(或最前,下面以最后为例)。定义索引下标iii,jj原创 2021-08-29 16:25:08 · 2259 阅读 · 0 评论 -
分而治之策略-最大子数组(java、c++、python)
目录最大子数组和问题简单枚举法进阶枚举法归并法最大子数组和问题给定一个无序数组,求其最大子数组和。subArrsubArrsubArr为arrarrarr的子数组即是说aubArraubArraubArr为arrarrarr中的某一段分片,subArrsubArrsubArr的子数组和即为该段分片中所有元素之和。具有最大子数组和的子数组记为最大子数组。简单枚举法列举所有可能的子数组,记录最大子数组和。一个长度为nnn的数组存在n(n+1)/2n(n+1)/2n(n+1)/2个非空子数组,故原创 2021-08-28 13:47:44 · 667 阅读 · 0 评论 -
分而治之策略-归并排序(java、c++、python)
目录二路归并问题归并排序二路归并问题问题:将两个有序数组arr1arr1arr1,arr2arr2arr2合并为一个新的有序数组arr3arr3arr3。分析:根据选择排序思想,每次循环找到两个数组中的最小元素依次追加到新数组。对于每次循环,需要找到两个数组中剩余元素的最小元素,即min{min{arr1},min{arr2}}min\{min\{arr1\},min\{arr2\}\}min{min{arr1},min{arr2}},由于arr1arr1arr1和arr2arr2arr2均为原创 2021-08-28 13:44:23 · 298 阅读 · 3 评论