У меня есть два массива класса Record
.Класс Record
определяется следующим образом:
class Record{
char* string; //the word string
int count; //frequency word appears
}
. Эти два массива определены (уже инициализированы)
Record recordarray1=new Record[9000000]; //contains 9000000 unsorted Records
Record recordarray2=new Record[8000000] //contains 8000000 unsorted Records
. Цель состоит в том, чтобы найти строки, которые совпадают между двумя массивами идобавьте их в новый массив, где их счетчики суммируются, и если в другом массиве есть строка, которой нет, просто добавьте в новый массив.Чтобы сделать это, я попытался сначала отсортировать два массива (в алфавитном порядке по строкам), затем сравнить recordarray2
, если строка совпадает, то продвинуть индекс recordarray2
, в противном случае продвинуть индекс recordarray1
, пока вы не найдете один,Если вы не нашли его, добавьте его в новый массив.
К сожалению, этот метод СЛИШКОМ слишком медленный, сама сортировка занимает 20+ секунд с сортировкой STL.Есть ли более быстрый метод сортировки, который мне не хватает?