1. 希尔排序 思路: 是优化了的插入排序,可以改进当最值处于头或尾需要多次移动元素的问题,因为它会设置步长k(>=1),初始步长是len/2, 先保证步长为k的每个子数组有序,再进一步缩小步长直到为1的时候,数组基本有序。 ''' 希尔排序 时间复杂度 平均:O(nlogn) 最好:O(nlogn ...
分类:
编程语言 时间:
2021-04-29 11:58:13
阅读次数:
0
##题意 求最长上升子序列长度 ##思路 本题直接用dp写,会超时,需要优化 优化办法:二分+dp ##AC代码 //4test n //6 p //4 2 6 3 1 5 ->3 //10 //2 3 4 5 6 7 8 9 10 1 ->9 //8 //8 7 6 5 4 3 2 1 ->1 / ...
分类:
其他好文 时间:
2021-04-19 14:47:09
阅读次数:
0
P 问题描述:可以在多项式时间复杂度内求解; 举例:二分查找(O(logn))、快排(O(nlogn)) NP 问题描述:可以在多项式时间复杂度内验证是否是可行解的问题;有指数时间复杂度的求解方法;这类问题可以用启发式算法求解,但只能得到一个相对的最优解; 举例:所有P问题(可以在多项式时间复杂度内 ...
分类:
其他好文 时间:
2021-04-13 12:23:13
阅读次数:
0
LeetCode148 排序链表 题目 给定链表的头结点head,返回排序后的链表,按照由小到大的顺序。 案例1 输入:head = [4,2,1,3] 输出:[1,2,3,4] 分析 使用归并排序,先找出中间节点(快慢指针:快指针每次走两步,慢指针每次走一步,当快指针走到链表最后,慢指针所在的位置 ...
分类:
编程语言 时间:
2021-04-10 13:34:31
阅读次数:
0
int func(int n){ int i = 0,sum = 0; while(sum < n) sum += ++i; return i; } 求时间复杂度 A. O(logn) B. O(n^1/2) C. O(n) D. O(nlogn) ++i, i = 1,2,3,4,5,···,k。 ...
分类:
其他好文 时间:
2021-04-10 13:08:02
阅读次数:
0
链接:http://118.190.20.162/view.page?gpid=T2 注意:组合数利用杨辉三角形递推O(n)求解后是s[n][m],n是大的值,n为1e5用逆元预处理求解,时间复杂度O(nlogn) 代码: #include<bits/stdc++.h> using namespac ...
分类:
其他好文 时间:
2021-04-07 11:04:30
阅读次数:
0
1、时间复杂度o(1), o(n), o(logn), o(nlogn)。算法时间复杂度的时候有说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之 ...
分类:
其他好文 时间:
2021-04-05 11:50:18
阅读次数:
0
public class MergeSort { //基本思想为分治法,将有序的子序列合并,得到有序的序列。先使每个子序列有序,再使子序列段间有序。 //当有 n 个记录时,需进行 logn 轮归并排序,每一轮归并比较次数不超过 n,元素移动次数为 n,因此时间复杂度为 O(nlogn)。 //归并 ...
分类:
编程语言 时间:
2021-03-31 12:01:17
阅读次数:
0
插入排序 最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2) public int[] insertionSort(int[] array) { if (array.length == 0) { return array; } int curre ...
分类:
编程语言 时间:
2021-03-31 11:43:47
阅读次数:
0
如果用sort函数的话需要nlogn的时间复杂度 #include<algorithm> #include<string.h> #include<iostream> #include<stdio.h> #include<string.h> #define OFFSET 500000 int Hash ...
分类:
编程语言 时间:
2021-03-03 12:38:22
阅读次数:
0