有N个工人,第i个工人的质量是quality[i],最小工资期盼是wage[i],现在想雇K个工人组成一个支付组,返回所需的最小花费。有两个条件: 1. K个工人的质量和给他开的工资的比例是相同的。2. 每个工人都要满足他的最小期望工资。 解法:最大堆: priority_queue。首先对付工资和 ...
分类:
其他好文 时间:
2019-07-01 14:16:21
阅读次数:
83
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序 :通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序 :不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线 ...
分类:
编程语言 时间:
2019-06-23 15:54:34
阅读次数:
102
这段代码对 deque 容器 words 中的 string 元素进行了排序,并且输出了排序后的结果。这里的比较函数是一个 lambda 表达式,它们用每个单词的最后一个字母来比较排序的顺序。结果元素以它们最后一个字母的降序来排序。下面在一个简单的示例中介绍 sort() 的用法。这里会先从键盘读取 ...
分类:
其他好文 时间:
2019-06-08 21:40:39
阅读次数:
116
题目描述: 不使用比较排序,实现一个数组排序 时间复杂度O(N),额外空间复杂度O(N) 解题思路: 使用桶排序思维,申请一个额外数组,叫桶,用来记录数字出现的次数,然后输出即可,但桶排序一般适用于0-9的元素数字排序,因为此时桶只需申请0-9的空间,若array元素为999,则桶的空间至少得申请0 ...
分类:
编程语言 时间:
2019-06-07 13:04:08
阅读次数:
137
1、基数排序算法的简单介绍 关于基数排序算法的介绍有很多资料可以通过很多途径获取。基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,即通过将所有数字分配到应在的位置最后再覆盖到原数组完成排序的过程。 基数排序算法: 是一种非比较方法 ...
分类:
编程语言 时间:
2019-05-27 13:50:38
阅读次数:
175
计数排序: 1、一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出,它的优势在于在对一定范围内的整数排序, 其时间复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法 2、步骤: a、找出给定整数序列的最大值 max 和最小值 min,创建大小为 ma ...
分类:
编程语言 时间:
2019-05-12 01:37:31
阅读次数:
157
任何比较排序算法的时间复杂度的上限为O(NlogN), 不存在比o(nlgN)更少的比较排序算法。如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件。计数排序就加入了限制条件,从而使时间复杂度为O(N). 计数排序的核心思想(来自算法导论):计数排序要求待排序的n个元素的大 ...
分类:
编程语言 时间:
2019-05-11 19:40:00
阅读次数:
200
C语言中用字符数组和一组函数实现对字符串的操作。 C++中用一个类类型实现一个字符串。 string 类:类提供字符串的连接,大小比较(排序),查找,提取,插入,替换等功能。 头文件<string> sstream类: 字符串流类(sstream)用于字符串的转化 头文件<sstream> 。ist ...
分类:
其他好文 时间:
2019-05-08 19:04:22
阅读次数:
152
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时 ...
分类:
编程语言 时间:
2019-05-07 12:58:33
阅读次数:
133
排序算法可以说是一项基本功,解决实际问题中经常遇到,针对实际数据的特点选择合适的排序算法可以使程序获得更高的效率,有时候排序的稳定性还是实际问题中必须考虑的,这篇博客对常见的排序算法进行整理,包括:插入排序、选择排序、冒泡排序、快速排序、堆排序、归并排序、希尔排序、二叉树排序、计数排序、桶排序、基数 ...
分类:
编程语言 时间:
2019-04-06 17:10:00
阅读次数:
146