c语言从4个整数中找最小的数,编程之法:面试和算法心得(寻找最小的k个数)...
内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java
题目描述
输入n个整数,输出其中最小的k个。
分析与解法
解法一
要求一个序列中最小的k个数,按照惯有的思维方式,则是先对这个序列从小到大排序,然后输出前面的最小的k个数。
至于选取什么的排序方法,我想你可能会第一时间想到快速排序(我们知道,快速排序平均所费时间为n*logn),然后再遍历序列中前k个元素输出即可。因此,总的时间复杂度:O(n * log n)+O(k)=O(n * log n)。
/*
* 快速排序法 O(N*logN)
* 最简单直接的方法就是快速排序+返回前k个数字
*/
public static int[] solution1(int[] arr, int k)
{
Arrays.sort(arr);
int[] result = new int[k];
for (int i = 0; i < k; i++)
{
result[i] = arr[i];
}
return result;
}
解法二
咱们再进一步想想,题目没有要求最小的k个数有序,也没要求最后n-k个数有序。既然如此,就没有必要对所有元素进行排序。这时,咱们想到了用选择或交换排序,即:
1、遍历n个数,把最先遍历到的k个数存入到大小为k的数组中,假设它们即是最小的k个
c语言从4个整数中找最小的数,编程之法:面试和算法心得(寻找最小的k个数)...相关推荐
- 【C语言练习】四个整数中找出最大的一个
<啊哈C语言>这本书上的练习题: 从键盘任意读入四个整数,让计算机从中找出最大的一个. #include <stdio.h> #include <stdlib.h> ...
- 如何在10亿个整数中找出前1000个最大的数?
作者:vincent-duan,专注 Java,沉迷开源,架构师社区合伙人! 面试题目:如何在10亿个整数中找出前1000个最大的数. 我们知道排序算法有很多: 冒泡算法:通过两层for循环,外层第一 ...
- 2.5亿个整数中找出不重复的整数
问题描述:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数. 思路:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共 ...
- 如何在10亿个整数中找出前1000个最大的数(TopN算法)
面试题目:如何在10亿个整数中找出前1000个最大的数. 我们知道排序算法有很多: 冒泡算法:通过两层for循环,外层第一次循环找到数组中最大的元素放置在倒数第一个位置,第二次循环找到第二大的元素放置 ...
- 一道笔试题:从1亿个整数中找出最大的一万个
今天看到一篇赖永浩大牛的博客,由一道笔试题目谈算法优化.http://blog.csdn.net/lanphaday/archive/2008/12/19/3547776.aspx. 题目原题是从10 ...
- 在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数
方案1:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32 * 2 bit=1 GB内存,还可以接受.然后扫描这2.5亿个整数 ...
- 找字符串中最长单词C语言,C语言 在已知字符串中找最长单词
编程在一个已知的字符串中找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词. 比如:"ni hao world",最长单词是5个字母 这个题目其实不难,但是很多初学者会没 ...
- C语言 计算一串字符中出现的数字字符数
getchar 函数的功能是读取字符串并将其返回.输入结束或读取过程中发生错误时,就会返回EOF值. #include <stdio.h>int main(void){int i, str ...
- jtable如何从表格中定位_Java Swing组件编程之JTable表格用法实例详解
本文实例讲述了Java Swing组件编程之JTable表格用法.分享给大家供大家参考,具体如下: 表格是GUI编程中使用较多,但也是最麻烦的一个控件之一.表格是用来显示二维数据,提供编辑,选择等功能 ...
最新文章
- codevs 1203 判断浮点数是否相等
- 为什么说21世纪是一场ABC的革命?
- 学习ASP.NET Core Razor 编程系列九——增加查询功能
- 解决hash冲突的常用方法
- Eclipse集成Groovy插件
- Emacs学用快捷键
- [AtCoder Grand Contest 048] D - Pocky Game(区间dp + 博弈)
- Cache技术―OSCache
- idea解决maven pom依赖下载失败
- Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
- 【AI视野·今日CV 计算机视觉论文速览 第238期】Fri, 1 Oct 2021
- 3dvary灯光材质为什么不亮_关机后电脑灯光闪瞎狗眼?在这里关闭它
- arduino 蓝牙示例_,arduino 蓝牙例子,
- Lambda 的优势
- maven学习(3)
- 讲解开源项目:用 Python 生成有“灵魂”的二维码
- linux -- CW8.8 编译 提示缺少libstdc++.so.5的error
- 大数据学长面试之华为面试题
- EXCEL——提取身份证中的出生年月日
- vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.