![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
算法
moon-half-fire
这个作者很懒,什么都没留下…
展开
-
最大字段和问题——分治法(C语言)
#include<stdio.h> int MaxSubSum(int* arr, int letf, int right); //时间复杂度O(nlogn) int main() { int arr[] = { -2,11,-4,13,-5,-2 }; int Max = MaxSubSum(arr, 0, sizeof(arr) / sizeof(int) - 1); printf("%d", Max); return 0; } int MaxSubSum(int* arr, i.原创 2022-05-12 16:47:43 · 1023 阅读 · 0 评论 -
java--二分查找,快速排序
例一: 给定数组a[0 : 8]={1, 8, 12, 15, 16, 21, 30, 35, 39}。采用二分搜索算法完成下述任务: 二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 方法一:(非递归) public st原创 2021-09-20 09:04:50 · 309 阅读 · 0 评论 -
java线性时间选择---第k小的元素问题
线性时间选择算法 Select() :对快速排序的改进,最坏时间O(n)。(大致的思路如下:) 将 n 个元素,分成⌈n/5⌉⌈n/5⌉组,取出每组的中位数(第三小的元素) 取出⌈n/5⌉⌈n/5⌉个中位数的中位数(Select函数可以取中位数) 利用快排中的分解函数 Partition(),以所求中位数为基准,划分 a[p : r] 为两段。 取其中一段进行递归。 注:做完前两点可以得到上图的数组 这是书上的伪代码: java代码(可能有些小问题是我没测试到的) public cl..原创 2021-10-07 15:42:20 · 671 阅读 · 0 评论 -
java全排列和归并递归算法
递归算法: 例一: 采用递归算法产生 的全排列。 递归的算法的关键之一是递归结束的条件:通常都是分解到只有一个元素(只有一个元素时,全排列是最简单的); 第二:全排列还要每个数字都占有每一个位置。 第三:我们应该考虑是先占有每个位置还是分解(递归) 通过下图我们可以知道,应该先占有每个位置再分解(递归) public class sy01 { public static int arr[] = new int[]{1, 2, 3}; public stati...原创 2021-09-14 13:13:48 · 523 阅读 · 0 评论