Итак, вот моя проблема: я пытаюсь сделать вид сортировки вставки. На самом деле, я пытаюсь выполнить поиск через ArrayList с использованием алгоритма Binary Search и найти, куда вставить строку. Что у меня до сих пор вид работ. Он находится в частичном порядке. Я был в тупике в течение недели! Ниже мой код:Вставка строк в ArrayList с использованием двоичного поиска в Java?
EDIT: Извините, я думаю, что смутил людей. Мой вопрос в том, как я могу отредактировать это для правильной работы. Он вставляет мои объекты в частичном порядке. Мне нужно, чтобы он был полным порядком! Я не знаю, где это происходит. У меня слишком много данных, которые анализируются для отладки этой строки для строки.
private void insertOrdered(int frontParameter, int endParameter, TwitterData user) {
int front = frontParameter;
int end = endParameter;
int mid = (front+end)/2;
if (front > end) {
if (user.getUsername().equalsIgnoreCase(users.get(mid).getUsername()))
users.get(mid).addTweet(user.getTweets().get(0));
else
users.add(mid, user);
}
if (user.getUsername().toLowerCase().compareTo(users.get(mid).getUsername().toLowerCase()) < 0) {
insertOrdered(front, mid - 1, user);
}
else if (user.getUsername().toLowerCase().compareTo(users.get(mid).getUsername().toLowerCase()) > 0) {
insertOrdered(mid + 1, end, user);
}
else { //will get to this case if the usernames being tested are equal
users.get(mid).addTweet(user.getTweets().get(0)); //if the user is already in the list, just add the tweet. It is assumed that the user being passed in will only have one tweet tied to their information hence the get(0)
}
}
Для получения некоторой исходной информации я использую это для имен пользователей ArrayList и связанных с ними твитов. Прошедший параметр, пользователь, является объектом TwitterData класса, который я написал. Для всех интенсивных целей все, что вам нужно знать, могу ли я получить имя пользователя и список твитов, которые пользователь может иметь в твиттере. Ниже приведен тестовый выход первых 100 пользователей списка, чтобы показать, что я имею в виду, что он частично работает.
первых 100 пользователей выход:
4colorrebellion
50BandBuckie
2996mymy
20120040
_littlethugg
_IndyaWithaWHY_
__PrettyMistake
__Mannyy24
_MikeFishh
_NikeDeshaun_
_TinaBeana
_PrincesaNessa
_LoveInPaaaris
_Victoria_Ortiz
adriannstacey21
ahansen718
action_packed_
Alicemegan93
alexgracehunter
AlishaaShaffer
arowsey_15
Amy_Vee
allycolucci
AmbiTious___xO
aguss__A
averybrownn
babbyyy_itsREAL
ando775
bburns1117
amberdorais
AshMarieMonica
Ashton_45
_SarahJustine
BlasianCocaine
belieber_pride
AyeeIts_DeeDee
BrianHodges
BritFranceNews
Big_Red911
BiteMy_SlimJim
BadGirlYon
Cemonee_Allisse
cathy_riveros
byby_35
CEOSIXX
busybeekatie
ChelsiKatherine
BOOBtifulJohnny
Coolie_Mackin
coralreefer420
CrashBandaCooch
codyalexander23
cubanrice
corrinea143
Cyndi_R82
danny728_
dbangin
ASNievera
DeAndre_Johnson
Deion_Hungry
DStudmuffin
cowellEmma
expired_data
Dr_drew_V93
feather_hinn
DominiqueQ2
getbackamistake
Da_Dirty_Dern
dudeimisaac
elennatalbert
evillurking
fANNcy_
covolm4
HimOverHere
DameLush
erinnnroach
freaky_fahfah
freesugardaddy
elhotpocket
FollowMandy
HaileyySorenson
DomoNinjaSwagg
IamSalinaScott
fredthemarauder
IAmTHATguy_1
facucuellar
iDream_Mindless
hirschy_kiss94
freshmoney5
HannahMcC_x
GarrieBrocato
AyeeeCali
iSexTattedDudes
Illumi_Lani
itsyunk
jahzzi
Jamie_Hill101
iHeartAudiooooX
jaymethornley
JasonMyers18
еще одно, последнее другое дело действительно работает должным образом. Я удалил любого двойного пользователя, который был отправлен в ArrayList. Любые идеи?
Если его не домашние задания вы можете просто используйте Collection.sort() с соответствующим компаратором. –
AKJ, мне любопытно, сколько времени требуется для sort(). Это не очень интересно, так что я обязательно попробую это, но только от верхней части головы вы знаете большой O of Collection.sort()? Я полагаю, что эта вставка я считал n * log (n). Deporter, я пытаюсь исправить код. Он неправильно вставлен. – takisback
в чем же проблема? – Nrj