首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

java算法面试题:排序都有哪几种方法

发布网友 发布时间:2022-04-20 02:00

我来回答

3个回答

热心网友 时间:2023-07-16 05:58

4亿行,内存吃得下,但JVM可能不允许。
单个线程循环个4亿次,等死了。
问题是,这些数字是一行一行数值递增的,通过前后的数字大小比较既可以知道可能存在重复的数字,然后将这个可疑数字插入一个待处理队列。在往后的查找中,处理这个可疑数字队列。判断是否真正重复。

不太可能把数据全部缓冲到内存中。所以只要每次读入一行,再进行运算。
这个面试题,难度挺高。

热心网友 时间:2023-07-16 05:59

先排序再遍历,或者在排序的过程中输出重复的数。

排序的方法有很多,
如果要省空间就用快速、选择或是冒泡,堆排序好像效率挺高的,但是我不太熟。

这个问题描述有点问题,
计算出每一行中有哪些数字是重复的,
比如我其中一行是 222333
那答案就是2和3了,和小明的错误完全没关系。
问题应该是找出4亿行文本中重复的数字,而不是一行中重复的数字吧

热心网友 时间:2023-07-16 05:59

采用2-Bitmap(每个数分配1bit,0表示出现一次,1表示多次)进行,共需内存2^32 * 1 bit= 512M内存,还可以接受。然后扫描这4亿个整数,查看Bitmap中相对应位,0-1,1不变,所描完事后,查看bitmap,把对应位是1的整数输出即可。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com