堆排序就是借助二叉堆进行排序,不了解二叉堆的可以先看这里。本文以升序排序为例,首先将待排序数组放置在最小堆中,此时堆顶一定是数组中最小的元素,然后删除堆顶元素,此时调整后的最小堆顶会是第二小的元素,从而实现排序。 时间复杂度:O(nlogn) 代码: public static void main( ...
分类:
编程语言 时间:
2019-11-25 00:15:22
阅读次数:
101
DAY -1 停课的第五天。早上来机房教练居然不在,先看了一道憨题,发现ST表+二分查找nlogn水过,然后发现单调栈可以O(n),肥肠开心 打了走人。 然后就开始颓了(逃 颓了一会之后看愤怒的小鸟这题,发现异常憨,随手打了一个发现85,加了个小优化就A了。 临走的时候对着机房喊了一声“再你妈的见” ...
分类:
其他好文 时间:
2019-11-24 12:04:19
阅读次数:
89
一、直接插入排序 直接插入排序 和折半插入排序 ,图示是一样的,但是在进行插入的时候就看出效率 了 。 折半插入排序:采用折半查找插入; 直接插入排序:一次比较插入。(代码中很明显) 数据量大折半插入的效率高点 //直接插入排序//算法思想:每趟将一个待排的关键字按照其值的大小插入到已经排好的部分有 ...
分类:
编程语言 时间:
2019-11-21 17:02:37
阅读次数:
89
题目描述: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路分析: 思路一:排序+遍历,如果是升序,那就是返回nums[n-k],如果是降序,那就是返回nums[k-1] 时间复杂度:O(Nlogn) 空间复杂度:O( ...
分类:
编程语言 时间:
2019-11-20 15:34:02
阅读次数:
81
一、实践题目 程序存储问题 二、问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多 ...
分类:
编程语言 时间:
2019-11-17 21:12:35
阅读次数:
84
程序存储问题 题目: 解析: 这道题思路非常简单,就是选取最小的那几个程序放到磁盘里面,直到放不下为止。用贪心算法的思路来说,就是每个子问题都选取当前最小的程序,最终会得到整体的最优解。 由于使用sort函数,该算法的时间复杂度为O(nlogn);由于没有开辟新空间,所以空间复杂度为O(1)。 具体 ...
分类:
编程语言 时间:
2019-11-17 18:16:45
阅读次数:
112
分析程序存储问题。内容包括: 1. 实践题目 设有n 个程序要存放在长度为L的磁带上。各个程序存放在磁带上的长度已列出。 程序存储问题要求确定使得n 个程序能够在磁带上存储尽可能多的程序的一个存储方案。 2.问题描述 要求每次选择长度最小的程序放入磁带中,使得能放入的程序量最多 3.算法描述(说明你 ...
分类:
编程语言 时间:
2019-11-17 01:00:34
阅读次数:
117
今天去面试的时候又考了排序算法,排序这个东西,你以为你懂了,但是真正去写的时候才会发现好多细节自己都模棱两可,我写着写着就全都乱了,回来之后赶紧重新写一遍。 (1)冒泡排序 public void bubbleSort(int a[]){ int temp=0; for(int i=0;i<a.le ...
分类:
编程语言 时间:
2019-11-16 12:41:32
阅读次数:
99
"传送门" 题意: 求子树众数。 思路: $dsu\ on\ tree$模板题,用一个桶记录即可。 感觉$dsu\ on\ tree$这个算法的涉及真是巧妙呀,保留重链的信息,不断暴力轻边,并且不断在子树内递归下去。又由于轻边数量不会超过$O(logn)$,所以总的时间复杂度控制在$O(nlogn) ...
分类:
其他好文 时间:
2019-11-14 22:16:52
阅读次数:
67
qsort()函数: 功能:相当于c++sort,具有快排的功能,复杂度的话nlog(n)注:C中的qsort()采用的是快排算法,C++的sort()则是改进的快排算法。两者的时间复杂度都是nlogn,但是实际应用中,sort()一般要快些,建议使用sort()。 头文件:stdlib.h用法: ...
分类:
编程语言 时间:
2019-11-14 14:59:28
阅读次数:
137