2012-02-25 2 views
0

Итак, вот моя проблема: я пытаюсь сделать вид сортировки вставки. На самом деле, я пытаюсь выполнить поиск через 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. Любые идеи?

+0

Если его не домашние задания вы можете просто используйте Collection.sort() с соответствующим компаратором. –

+0

AKJ, мне любопытно, сколько времени требуется для sort(). Это не очень интересно, так что я обязательно попробую это, но только от верхней части головы вы знаете большой O of Collection.sort()? Я полагаю, что эта вставка я считал n * log (n). Deporter, я пытаюсь исправить код. Он неправильно вставлен. – takisback

+0

в чем же проблема? – Nrj

ответ

1

Это было бы много проще, если вы просто вставить элементы в любом месте в списке и называется Collections.sort() было бы взять тот же объем работы, как вы уже вычислили для вставки O(n*logn)

+0

Хм, да, я пришел к такому осознанию в комментариях. Однако, спасибо! – takisback

Смежные вопросы