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的整数输出即可。