Fastest way of updating a sorted array

Soldato
Joined
18 Jun 2010
Posts
6,641
Location
Essex
Okay some information.
C++ btw.

1. I'm reading a stream from a text file that contains random words. I know the size and it's being put into an array of strings.
2. I CANNOT load them all in and then sort them alphabetically. I have to do sort of insertion sort, i.e. put it into the array at it's correct place than move everything else along by 1 -.-.

3.
How I'm doing it currently. I have 2 identical arrays.

I then loop through finding out where the new word should be added to. Find that position. If the position is at the end of the array, I put it into that position.

If it's not then I copy into the other array, the data up to the new piece, put that in and then put in the other parts of the array.

So. Like this:
Name to be added: "Fred"

Array1:
Adam
Chris
David
George
Simon

Add:
Adam, Chris, David, to Array2.
Add Fred to Array2.
Add George, Simon to Array2.

etc. and then Array2 becomes the active array. And then if I have to insert to the middle of that array I will do the same but to Array1, etc etc until over. Currently it takes about 7 seconds to do 4158 names. Which I don't think is that fast.

Places I think I can currently optimise: The searching to find the position where it's meant to be inserted.

I cannot change the fact that it's an insertion sort and you are not allowed to put it into the array unless you put it in at the correct location (CWK rules). :)

Can show people my code if they want to see it. It's quite dirty lol but it works and it's faster than my friend who uses binary chop to find out where to put his.
 
Last edited:
Soldato
Joined
28 Oct 2002
Posts
5,014
it's faster than my friend who uses binary chop to find out where to put his.

No offence but he must be doing something wrong then. If you're both moving the data in the same way the cost of string comparisons for your implementation will be higher than his, being as you're searching and comparing sequentially your algorithm is O(n), his is O(log n).
 
Soldato
OP
Joined
18 Jun 2010
Posts
6,641
Location
Essex
No offence but he must be doing something wrong then. If you're both moving the data in the same way the cost of string comparisons for your implementation will be higher than his, being as you're searching and comparing sequentially your algorithm is O(n), his is O(log n).

I don't take any offence to it at all he might but I'm not him! :D

The way we move data is different and that's where I think the time I'm making up is.

I have 17 million comparisons he has 4.5 million.
 
Associate
Joined
21 Dec 2005
Posts
576
Location
Felixstowe
Are you allowed to insert them into an array in order but with some gaps?

If so define an 110,000 element array and start inserting a* at 0, b* at 4200 etc.

That way you only have to sort and move within names starting with the same letter.

When they are all in just copy from one array to the other leaving out the blanks.
 
Associate
Joined
23 Mar 2006
Posts
1,739
Does it explicitly say you have to use an array? Also does it say anything about the words being unique (ie no duplicates)?
 
Soldato
OP
Joined
18 Jun 2010
Posts
6,641
Location
Essex
Yes it HAS to be in an array and it can not be put into the array at a position that is not the position it should go in, i.e. you cannot insert all the words then sort the array.

Basically the coursework entails reading in from a text file that is given.
The text file is in the format:

"Number of words: X

word1
word2
word3
word4
....
wordX
"

We have to be able to handle repeated words and if they used a different amount of words, i.e if X is a bigger number it'll be able to handle that.

I got it to sort 4158 words in about 4 seconds using my method (on a laptop i5), my friend who's using binary chop is getting it in about 9 seconds.

Here's my Algorithm. INB4 ugliest code in the world. I know it doesn't look nice. If you want a rough explanation of how it works read my first few posts.

Code:
void ArrayStorage::read(ifstream &toBeRead)
{
	string numWords;
	string firstLine;
	toBeRead >> firstLine >> numWords;
	int noWords = atoi(numWords.c_str());
	_words = new string[noWords];
	string *_words2 = new string[noWords];
	bool whichInUse = false;
	// false = _words. true = _words2
	int pos;
	int iterations = 0;
	string temp;
	int wordsAdded = 0;
	int middle = 0;
	_noWords = noWords;
	for (int i=0; i < noWords; i++)
	{
		toBeRead >> temp;
		iterations++;
		//First name
		if (_words[0] == "")
		{
			_words[0] = temp;
			wordsAdded++;
			whichInUse = false;
			
			continue;
		}

		//default position
		pos = wordsAdded;

		int middle = wordsAdded/2;
		int limit;
		if (!whichInUse)
		{
			if (temp < _words[middle])
			{
				int middle4 = wordsAdded/4;
				if (temp < _words[middle4])
				{
					// 1st quarter
					middle = middle4;
					limit = -1;
				}
				else
				{
					// 2nd quarter
					limit = middle4;
				}
			
			}
			else
			{
				int middle34 = (wordsAdded/2) + (wordsAdded/4);
				if (temp < _words[middle34])
				{
					// 3rd quarter
					limit = middle;
					middle = middle34;
				}
				else
				{
					// 4th quarter
					limit = middle34;
					middle = wordsAdded;
				}
			}
		}
		else
		{
			if (temp < _words2[middle])
			{
				int middle4 = wordsAdded/4;
				if (temp < _words2[middle4])
				{
					middle = middle4;
					limit = -1;
				}
				else
				{
					limit = middle4;
				}
			
			}
			else
			{
				int middle34 = (wordsAdded/2) + (wordsAdded/4);
				if (temp < _words2[middle34])
				{
					limit = middle;
					middle = middle34;
				}
				else
				{
					limit = middle34;
					middle = wordsAdded;
				}
			}
		}


		//find where the position is
		if (wordsAdded > 10)
		{
			if (!whichInUse)
			{
				for (int j = middle; j >limit; j--)
				{
					if(temp < _words[j])
					{
						pos = j;
					}
				}
			}
			else
			{
				for (int j = middle; j >limit; j--)
				{
					if(temp < _words2[j])
					{
						pos = j;
					}
				}
			}
		}
		else
		{

			for (int j = wordsAdded - 1; j> -1; j--)
			{

				if (!whichInUse)
				{
					if(temp < _words[j])
					{
						pos = j;
					}
				}
				else
				{
					if(temp < _words2[j])
					{
						pos = j;
					}
				}
				iterations++;
			}
		}

		//if there's only one word in the array.
		if (wordsAdded == 1)
		{
			if (temp < _words[0])
			{
				if (!whichInUse)
				{
					_words[1] = _words[0];
					_words[0] = temp;
				}
				else
				{
					_words2[1] = _words2[0];
					_words2[0] = temp;
				}
			}
			else
			{
				if (!whichInUse)
				{
					_words[1] = temp;
				}
				else
				{
					_words2[1] = temp;
				}
			}
			wordsAdded++;
			continue;
		}
		//if there is more than 1 word in the array/
		if (wordsAdded != 1)
		{
			if (pos == 0)
			{
				if (whichInUse == false)
				{
					whichInUse = true;
					_words2[0] = temp;
					for (int i = 0; i < wordsAdded; i++)
					{
						_words2[i+1] = _words[i];
						iterations++;
					}
				}
				else
				{
					whichInUse = false;
					_words[0] = temp;
					for (int i = 0; i < wordsAdded; i++)
					{
						_words[i+1] = _words2[i];
						iterations++;
					}
				}
				wordsAdded++;
			}
			//if the position is at the end of the file.
			else if (pos == wordsAdded)
			{
				if (whichInUse == false)
				{
					_words[pos] = temp;
				}
				else
				{
					_words2[pos] = temp;
				}
				wordsAdded++;
			}
			//else it's in the middle
			else
			{
				if (whichInUse == false)
				{
					whichInUse = true;
					for (int i = 0; i < pos; i++)
					{
						_words2[i] = _words[i];
						iterations++;
					}
					_words2[pos] = temp;
					for (int i = pos+1; i<wordsAdded+1;i++)
					{
						_words2[i] = _words[i-1];
						iterations++;
					}
				}
				else
				{
					whichInUse = false;
					for (int i = 0; i < pos; i++)
					{
						_words[i] = _words2[i];
						iterations++;
					}
					_words[pos] = temp;
					for (int i = pos+1; i<wordsAdded+1;i++)
					{
						_words[i] = _words2[i-1];
						iterations++;
					}
				}
				wordsAdded++;
			}
		}
	}
	
	// put it in the array that we want to use later
	if (whichInUse == true)
	{
		for (int i = 0; i<wordsAdded;i++)
		{
			_words[i] = _words2[i];
		}
	}
	// print out the words (not necessary just to test it works)
	for (int i = 0; i< wordsAdded; i++)
	{
		cout << _words[i] << endl;
	}
	
	cout << iterations << endl;

	string keypress;
	cin >> keypress;
	
}

and the list of words:

Code:
NumberOfWords 4158

ibogaine
mutons
druggier
reoutfit
subscale
poove
pixel
turista
tostadas
fajita
sublines
caesar
klister
flextime
mumu
copurify
chompers
saltings
gammier
arkose
oxazepam
hummuses
codriver
aerosats
gussying
stanine
kyaks
niftily
dynels
mudpack
potline
caponatas
pentode
bethesdas
pinyins
blurbing
bergere
snuggies
fanners
vig
gorp
yechy
dekkos
pishoge
bundt
repump
cursors
nixe
pirogies
retacked
prefiled
repark
unbouncy
poulter
eggless
outrate
scrooch
caseload
relink
sleaze
noncrime
plotzed
pinots
paillard
pretrim
soleus
gluepot
tectite
guideway
slablike
sanddab
tallaisim
palimony
gluon
chickories
cagefuls
flexagon
gamas
thewier
petnaps
lynchpin
glopped
exitless
subshell
kelep
superfan
pierogi
outgross
resprays
nonplays
bimboes
sidebar
vodouns
wheatens
outplots
mismakes
synfuels
chugalugging
lawbooks
tarty
matchup
tearaway
zaikai
soapers
epazotes
regalers
drywalls
yantra
coactors
marsalas
apods
signages
prepupal
tiptoeing
pecorino
cannoli
preprice
releves
pavillon
nucleoid
cyclery
pomfret
condos
neurulas
bodysuit
spaciest
redshift
tufoli
coesite
****ers
bookfuls
dicked
ax
downwash
kwanza
umangite
euryoky
screwup
challa
gaeing
yamulka
nudzhes
monosomy
uncasked
macon
adenosis
swacked
outfish
yecchs
rifampin
helilift
kluge
saroses
kavakava
telestic
katcina
chadri
acholia
knesset
berdache
renested
fenurons
quohog
tailfan
pairings
bingeing
gawped
susses
gorps
backdate
dinkums
toyshop
celiacs
konk
sorings
parakite
wrassles
recycler
affinal
claves
aioli
birrotch
grosze
braconid
capris
patinate
acapnia
sickout
abasia
staithes
nutsier
wimp
malaccas
subnets
hardedge
riesling
tsoris
redub
saggier
apres
lexes
redamage
vigneron
fakey
blooie
ductal
undocile
hokily
zeroth
pycnotic
codriven
negroni
woodies
misdials
setts
merlot
nonactor
cutesie
cozying
medevacs
supercop
rif
quinelas
askos
ayurvedas
thymosin
ninja
tepoy
scries
releve
neuks
duvets
retaxed
vigas
gallets
kilobaud
prefreezes
disproven
latkes
presong
acrosome
orby
korats
buyouts
comakes
shikkers
outspeed
boiloff
rufiyaa
clavi
tepoys
nunatak
crepon
lexeme
outhunt
shiatzus
souk
flavanol
kuvasz
pliotron
nicads
asparkle
foveas
sentimos
zydecos
botrytises
woopses
gratinee
megadose
galleted
gormless
mudslide
pushrod
bouviers
meouing
athetoid
roomie
soyuzes
clangers
stropper
momzers
katchina
speedos
grues
zinebs
stroppy
yucked
rebottle
whitier
outliner
tachyon
gasohol
unbitter
chromyls
gingilli
odeums
clochard
precode
campused
hazelhen
antifoam
savviest
rebought
kimchi
antsiest
parergon
subsite
reroof
avadavat
clencher
calorizes
nuking
premolt
tets
prework
rubout
reraised
jouals
caretook
diamante
kolbasis
cabbed
braciole
superspy
ripstop
nonyl
exonumia
sherpas
arenites
lovats
anural
cowflops
boutons
alcids
howdied
apteria
recorked
tillites
stackup
ballsiest
jobname
selvas
tinkler
comake
sett
bareboats
raftered
departee
hons
fillo
prefrozen
hunh
rebuy
miskick
pasteups
kina
sockless
irid
cowrites
altoists
relock
ponging
abseil
stats
bushwahs
retags
ecofreak
oldsquaw
pterygia
predive
naira
botanica
crabmeat
arfs
wodge
footsy
rouilles
banties
dinges
quokka
bleeps
finos
tranches
refeels
clanger
yock
doum
chapati
prepregs
ceviche
sialidan
quasher
cordelle
zits
knaurs
daffily
neuk
bedsheets
poofy
osteoses
acyloins
covins
scrimper
abseils
tet
hammada
illegals
shnooks
hebe
malangas
socko
sordor
pesto
plutei
******
moorcock
banty
antinuke
amanitins
agrias
****
remate
tectites
outcoach
postriot
glitzier
urbia
zonks
preerect
upscale
brittly
jackroll
tallit
splodged
albizzia
piscos
precodes
barbeque
reparked
citators
ankling
remarket
vanners
agentives
zek
brr
starkers
bouvier
syntagma
undoable
palazzos
chugalugs
jackrolled
tubenose
durries
faggotry
sushis
griot
oralism
respaces
meous
trike
knaur
nah
axoneme
yamulkas
housesit
sussing
lithoing
newies
aliyos
respoken
munchies
masscult
veejays
gonef
ponged
resculpt
caritas
rottes
nonissue
mistruth
amidine
khet
kinas
jones
maplike
reroofed
housesat
imager
elint
pushrods
spliff
merlots
vatu
vegie
mueslis
pretypes
cultish
ockers
retine
unjoints
azlon
outpunch
cogwheels
snogged
blooey
amusias
padis
latinos
agrypnia
vinify
refusnik
replumbs
outpitch
fumingly
dhurries
zenaida
gimmies
courter
duckwalk
shiatsus
roadies
specced
trug
apoapsis
ionogens
paybacks
khafs
boobish
renail
floatels
amylogen
nontonal
repotted
braciola
geta
dustoffs
telepath
galleria
kasbahs
hyper
crepons
melodica
yobbo
glias
ototoxic
tommed
adonises
sussed
durrie
hets
mamaliga
umangites
vac
ironizes
pastis
colead
dicty
tokomaks
retacks
subsites
subgoal
gawping
yecch
schtiks
temps
diethers
carpool
cistus
tughrik
canoodling
ag
pungled
bloviated
bathmat
halachas
slumisms
tarama
deleaves
backdates
spacier
redefect
baggers
boogying
gingelli
nonyls
zill
multiage
prefades
caprocks
sickos
boreholes
leadmen
cofounding
aeried
accidias
redubbed
umm
pongs
duxelles
unhedged
blams
jiveass
kyak
bobsledded
leadman
biotech
apterium
clefting
bombings
untorn
misenroll
tushy
piggiest
cory
abrosia
dalton
miching
astigmia
xylitols
panfries
ruboffs
staticky
naggier
macons
whoofing
gammiest
whitiest
sjamboks
hoya
grotty
granolas
quillaias
dogear
noniron
yardworks
bimbos
unitrust
chockful
parchesi
muscadet
unrusted
skywalk
hurst
futon
pisco
joky
repumps
naysayer
harumph
lomeins
ginkgos
subgenre
cloques
anticult
meoued
prez
sulcal
rebore
ganjahs
tomatoey
boychick
tawdrily
paesans
bicaudal
plugolas
phenates
bimbo
kimchees
romeos
philtrum
erotized
latino
hebes
trouncer
unbusy
cepheid
outrates
bigarade
newsie
pom
subtopia
simplist
marranos
borals
etic
queendom
kilobyte
ripoffs
flyoff
wiggiest
snowmold
redline
sheltas
fellates
daikon
uranias
pileless
comaking
mudpacks
vodoun
presplit
glitchy
flooie
prelife
acapnias
dagga
breadbox
theming
backchat
uncatchy
alates
cofound
bauhinias
flossed
pooves
miked
infights
clammer
pretype
codebooks
lavs
smartass
sonogram
octan
yakkers
nonmeat
aequorin
sublots
coverups
nachos
amidines
fishworm
retackle
trendies
situps
sonhoods
porny
putti
erasable
pibal
taka
plexal
varooms
overdubs
angakoks
grunges
bothrium
yuckiest
subblock
pungling
mojo
pommy
nudzh
dorsel
toughing
tambaks
preaudit
soyuz
playlist
crabbily
progeria
splurger
dapsones
troponin
decos
wricking
nonfinal
zappers
resprout
tuxedoed
faux
fugu
isopach
petsais
ouching
wonk
ausforms
hizzoner
upfront
wideband
jazzlike
syngas
dynel
outrow
zlote
spackles
repanels
laptops
microdot
bamming
knubby
unjoint
messaged
lovebugs
breadboxes
hahas
jockette
antigay
haha
reteamed
arkoses
bribee
sublunar
discoed
twisty
thunked
unsmart
spense
falx
zinger
rutin
buddings
recorks
flubbers
yuppie
fleapit
pagers
bundts
oliguria
antsier
huipils
taverna
soymilk
multicar
rerepeat
coydogs
oceanaut
tummler
dictier
unchicly
pehs
plotzing
unclips
flanken
pooching
recork
reedmen
midsize
coevolves
ylem
remotes
ecocidal
accidia
cowpies
blowed
snog
guv
lecythis
dilled
schliere
um
numbat
retax
curvedly
nitinols
shlepped
selva
genoises
zoophily
octanols
dolmas
demerara
pycnosis
abelian
keycard
pinkens
ponced
plew
piciform
gallet
diether
nametag
matsah
subfile
preriot
limpsey
boing
portapak
cattery
repos
offramp
borshts
unshowy
aggro
typable
tranq
fomite
airtimes
carnet
scabland
cozied
orbiest
parchisi
ska
nuzzler
outbulks
rabbity
repanel
quangos
chetrums
gasters
biblist
subcodes
parerga
shtiks
renests
verite
zingers
biotechs
santurs
rechews
firmware
dykey
pipiness
hummus
preedit
homestay
tel
frittata
pestos
abrachias
rebodies
bacula
kickiest
spinto
mos
anticold
bankcards
jasmins
nudzhed
gunnybag
wricks
takeup
repled
octans
boubou
minkes
movieola
woopsed
nickling
trikes
pazazzes
mahimahi
reremind
demerged
resight
cornrows
misdial
auteur
cohosting
acrasias
deleaved
unmeshes
yokozuna
kitelike
qat
lweis
ballpark
codesigning
vivaces
kibbehs
preboom
fishbolt
mismade
cassata
titfer
chador
philtra
hoteldom
jackrolling
laetrile
poshness
anemosis
ribier
canoodles
kidvids
leching
coverup
weltings
plenches
larees
monstera
carnets
ufologies
recoding
cruddier
dals
inro
refenced
yatters
sentimo
korat
pullups
mihrabs
bourride
phuts
halacha
sublot
tuneups
antigun
nonnews
unbraked
tonearm
imagers
leaners
zoophilies
yob
tzitzit
rabat
ragtop
bowwowed
zymosans
acholias
petnap
doums
agnosias
haftara
legongs
antired
liblabs
narky
globbier
promine
undotted
cathodal
gumboot
bleep
resites
diplexer
oompah
lensing
tallitim
xanthan
coedited
troilism
kellies
sciurids
sillibubs
ditziest
chloasma
blowjob
kolbassi
swimwear
slanty
tachisme
bustiers
woodie
nabe
muonium
pinny
reedman
pentene
arugula
binged
mabes
barbascoes
sonobuoy
oompahed
kobo
twistier
shmaltzy
carwashes
urtexts
codebook
kimchis
tombola
retaped
incanted
kidvid
convenor
reedily
numbats
itchily
didie
hamada
spaz
nonhome
gloppy
hostas
schlocky
sickees
prostie
duded
colobus
respades
elints
crazies
scampies
airdate
butle
dieseled
spotlit
amylogens
anticar
interage
synths
zymosan
demetons
hardline
senryu
dinge
spoofer
yakitoris
haggadah
frowst
cabomba
promines
nosedive
seviches
slatey
bikies
guanays
comsymps
shicker
kafs
hehs
carpools
silicula
mustardy
schnozz
cockapoos
pujas
dore
demerger
bazooms
miskicks
tillite
repot
poms
ryokans
unitizer
tahini
paygrade
rebored
heh
yuck
redon
bodysuits
synanons
nunataks
coniosis
eugenia
boobed
grottier
buyout
twanger
gamays
outdrags
marcato
oralist
fenuron
baldies
calzones
speedo
pereion
gypster
dahl
anorexic
reblend
corybant
shickers
thankers
lexemic
hols
dongas
coholders
afebrile
tsores
outrated
retaping
nurtural
butled
dodgem
whoofed
romeo
lemurine
intimist
reggaes
hoyas
unakite
premoral
linurons
garigue
databank
cowplop
bedsheet
paesani
outscoop
miscoded
geeky
signees
pasteup
courters
laptop
biennale
stanines
vinifies
bromizes
relocked
looneys
whoofs
fritz
borating
matsahs
garigues
redlines
relinks
gimmie
milnebs
codding
lowball
cistuses
gridlock
conchie
incisal
ajugas
spritz
banalize
pereopod
popsie
cholos
tostado
floppies
spackle
eurybath
zappiest
dewar
grungier
outskate
ludes
jovialties
cis
infought
birdshots
headfish
cissy
recodes
moviola
nachas
alky
scaleups
precuts
inti
tepals
aneurins
phut
unyoung
antrums
jovialty
pelmets
tuneup
schmos
granola
meshugga
kwanzas
baaskaaps
dahls
krumhorn
silvexes
outvied
sicko
subnet
liblab
decouple
overbeat
celosias
snakey
lezzies
pistes
unkink
partyer
etchant
subsea
cire
luged
takeups
feldsher
tranks
cholents
wimpish
dogears
epigeic
garni
regs
resoak
citator
biogases
reshines
giddyup
ruboff
clunky
zazen
mopier
payouts
jeepney
quins
devouter
qanats
frowsted
retore
fellator
mudhole
trimeric
toea
flacked
foxtrot
gelato
noisette
feedhole
padders
ionogen
bilayer
heishi
mimeo
giddyap
hairnets
luv
bren
eidolic
nunchaku
regrooms
coxitis
khaph
nonets
khoum
recamier
vatus
poofs
goopiest
cepheids
qindarka
nitery
filo
meou
nowness
mahogany
adjustoring
colone
cowrite
bombesin
rehabs
matambala
ringgit
opioids
postbase
tahinis
desktop
overlush
lugeing
flinkite
darshan
apoapsides
guvs
pereon
paveed
ick
reverbed
brens
giveback
mostests
haute
tragics
caveated
hahnium
opioid
urania
flutey
frazil
sene
putzed
casbah
sheilas
prerace
viewdata
peckish
scramjet
saggiest
trustors
dialoged
podocarp
rubious
bareboat
pyknosis
outbrawl
santalol
bankcard
whamo
khaf
croc
motordom
hahniums
viroids
glia
tamaris
mauds
reslates
sarky
grahams
kukris
ballsy
bearwood
fleapits
uh
rifs
prelives
kaf
bloviating
antiroll
adobos
rumakis
bota
buyback
premeet
coaliest
anovular
spadixes
unbright
familism
acyloin
glugs
muktuk
chilidog
squooshy
sushi
schmears
toroth
dictiest
retemper
gammy
bumph
filmers
cohost
morse
benomyls
tabooley
phytol
bargellos
coolth
huipiles
sewered
clefted
backwraps
tsooris
yocks
trawlnet
swingman
situp
unakites
titfers
diskette
unsliced
pentanol
expresso
maches
bezazz
yuckier
zoophobe
logania
fomites
revote
tubaists
biunique
rivulose
shannies
callaloo
crucks
nursers
arb
ufology
shlumps
shlepp
cowplops
paisana
respray
presorts
aristo
calamari
ekpweles
signee
achilleas
overbed
sifakas
bourrides
cabbing
subframe
hamadas
sjambok
coediting
antisag
ruckled
leched
misandry
prefile
riojas
beriberis
mesnes
licenti
randier
santur
abba
resod
ditsier
virilely
grue
punnet
tailleur
intraday
spritzes
luvs
paesanos
writerly
outcount
vanpools
shiatsu
saros
dorky
maloti
excimer
casitas
dashi
clammers
relocks
phoneyed
daledhs
spoofery
bethesda
shlepps
trugs
acidemia
panto
labrusca
beddable
prosties
badass
sundress
milkshed
gussie
gulag
prerock
shtetls
bifaces
coscript
perdie
grungy
repumped
ludic
glug
khoums
canoodle
hon
orad
lekvar
luthier
shmoozed
drears
overplot
dogeared
biotoxins
thewiest
repeg
nonfacts
aargh
meatloaf
workfare
fracti
remaster
nonprint
nicad
mothlike
nongays
ripoff
butling
dorsels
swiddens
weepie
detoxed
gangbang
mopery
konking
sukkot
bezazzes
salal
roms
suss
fems
coevolved
stiffing
foodie
ashiness
hotlines
preslice
rubbered
exeunt
horsepox
dapsone
gentrify
sacrings
kimchee
nancies
anorexics
resplice
miscode
sialids
cutovers
lezes
dekko
cruck
ponding
hambone
tealike
rared
sickie
amidones
psywar
zapper
unfaked
backbeat
kbar
oloroso
detoxes
resods
braless
jotters
bolshy
rebuying
intron
wellie
keleps
setenant
yattering
vetivert
fehs
scrootch
riminess
gutsily
kreep
crewneck
fretters
coronoid
bolshies
vegies
kazachok
ulus
ribiers
daltons
mopey
subpanel
cogwheel
tweenies
zoris
boomboxes
redreams
ocker
reroofs
lez
prissing
konks
cissies
claustra
meths
repolls
unpotted
bearwoods
nonet
diddlies
angeling
aerosat
eurokies
reraise
codesign
comingle
overlit
citywide
crookery
daledh
mayos
reinks
brachs
chatchkes
synanon
treelawn
cervelases
swingby
toney
duvet
buzukis
adobo
zloties
ralphing
caplet
airfares
pungles
kibeis
antiwear
noodging
aggadic
halakha
ausubo
ylems
rewets
galabia
syli
hokier
niteries
elflike
deorbits
intis
pycnoses
restress
pascals
dhobis
aecidial
umiaqs
deleave
kicky
chugalug
apod
benomyl
picomole
ickily
bromized
meth
scrying
sunproof
pretaped
browbands
pungle
whammo
footies
angakok
additory
vibronic
bam
caryatic
cabombas
tissular
eurokous
rias
regroom
chitosans
geekier
beetler
bushwah
exon
shrewdie
mysid
peh
rawin
birdings
yobboes
fellate
cepe
bearhugs
condo
nurd
revoted
pretrain
codesigned
onboard
jiao
respoke
kinesic
megabyte
oralists
pinot
fixit
neurula
pretrial
retape
refeel
toughed
liches
miking
kirs
var
spec
fellated
medfly
payout
padi
ralphed
tilings
sheepcot
alcid
aliyot
********
kuvaszok
antismut
coocoo
lithoed
reweds
haggadot
bacalao
sendup
subgraph
pooftah
havartis
potlines
frabjous
patzer
pixels
aiolis
overedit
cymbidia
typesetting
monellin
buddying
kukri
nonelite
goloshe
cakey
beefaloes
adenoses
tabouli
sickies
quintes
nogged
cassatas
bonemeal
shmooze
ulu
hansas
cowflaps
hornists
improv
teel
sunbelt
miscodes
subtilin
ataps
electees
daikons
berdaches
backdated
deifiers
wiseass
zymogram
precrash
geekiest
permed
miched
feh
aubretia
albizzias
overbill
restroom
relinked
dayworks
antiriot
phoronid
kheths
backhauled
nystatin
stiffed
ngultrum
diazinon
chickee
melamdim
swingbys
scyphus
subgums
redubs
kibbes
postburn
drecky
unbrake
scried
wiggy
layups
scripter
railcars
ruched
yautias
reteam
fleetly
unbilled
weepies
louche
speccing
natch
gussies
aarrghh
rereview
croppies
sholoms
flyless
jokey
yearend
nacho
sprangs
poulters
braconids
supercar
prefight
schrod
stageful
jeepneys
momser
laree
rejuggle
mudflows
vigs
jicamas
cofounds
vars
yautia
momsers
flyboy
panbroil
repegs
refence
orbier
zills
chetrum
retack
fajitas
sacring
antiman
nuked
lectins
backhauling
binocs
cripes
filos
cytosol
zipless
tubist
outkill
sodomize
wyn
bonk
pross
topspin
goniff
antiweed
midlife
ethephon
diatron
gypsters
exonic
gazumped
hardwire
shootout
carb
nutsiest
rehabbed
schlump
sokols
airtime
reshone
jism
yucks
mumbly
bribees
uglies
yays
mumus
bolthole
kreplach
twinjet
cohead
yakitori
reinject
upmarket
mistrain
vendeuse
duding
quantile
debrided
felafel
vanitory
lisente
pecs
backwrap
bumphs
tripwire
nutsy
keypad
rufflier
arenite
stuntman
noncling
cluttery
plotzes
nurds
pagings
bothy
dunam
sapote
cordings
cojoined
gazumps
pyknoses
tabuli
divebomb
poof
prefroze
chiral
nestable
bleeping
vinified
rechewed
nonmajor
yobs
oncogene
cervid
postteen
conioses
warhorse
nonfuel
untrendy
flokatis
armagnacs
codded
barchans
pignoli
wasabis
vitrains
crocs
huisache
sand****
pigouts
gratine
fillos
sillibub
topsider
quokkas
sordors
welly
bonking
bolshie
ickiness
noodges
hiplines
dicking
myositis
sherpa
joneses
dustoff
ditzy
chatchka
nabobish
videotex
sendups
stolport
marvy
demersal
sewable
boxboard
reboring
detassel
picritic
nonart
cioppinos
reindict
joyrode
mabe
panmixis
paranoic
gyplures
agism
overtalk
tughriks
segs
caca
aramid
perming
genoise
dryland
repo
premeal
medina
gaster
alencons
alderflies
bromize
schrods
preggers
howdying
overpump
naphtol
ragtops
lept
retears
scaleup
caplets
baculums
redlined
yarners
multiuse
sleazo
bulblets
yech
snowbelt
replumb
caprock
reink
cheapo
biogasses
outbulk
retro
outduel
untented
lav
piggier
overplan
miche
maryjane
sewering
outvying
whoof
bouton
glitzy
stiction
nondrug
ausforming
wricked
peroxy
naphtols
skas
endnote
spacy
scarily
retapes
coheading
rebooked
peacenik
hipline
gateaux
odists
bigfoot
antirape
dagwoods
zlotych
haftaras
subgoals
decafs
animalic
futz
caretakes
retros
sooks
braciolas
osmics
zygoid
faggy
cowrote
gessoed
uncrazy
yahrzeits
rackfuls
spookery
croppie
reinked
raggee
slammers
incant
foamable
twiddly
putto
cheerly
hommoses
blowjobs
bondings
tubaist
ditzier
nonohmic
renest
ballies
mudcats
ballhawks
bookful
unmeshed
postrace
tondos
tavernas
subline
kob
midcults
nuttings
rutins
mudholes
overmine
budworm
boral
buybacks
backchats
plantlet
nonglare
trifecta
chickees
seif
tagmemic
nondance
extubate
spirier
doozie
aequorins
retorn
payback
jellabas
prefire
blissed
gruyeres
quadplexes
bulblet
glopping
taillamp
pentodes
coevolving
wrick
biz
unstitch
halakhot
agnosia
egoless
tattily
recoded
poncing
letching
dickiest
boxboards
wovens
als
codecs
thunk
floosie
pulpers
gran
casbahs
twee
malemuit
zappy
nametags
rebooks
ceviches
nerdy
butles
misplans
adonis
clubroom
defang
cabernets
folkie
limpa
tradeoff
hmm
curbside
rares
pressors
hashhead
gibson
merdes
slainte
cheapos
jalapeno
uncuffed
bigfoots
airscape
****ers
bimorph
pangene
hoggets
fruitily
porcino
pinitols
zaikais
dewars
antipill
airfare
varoom
galabias
chatchkas
pizazzy
ajuga
budworms
misalign
shleps
airshed
sabayons
outvie
clubrooms
subzero
dexie
canids
bloviates
bonked
overlent
kickball
psoralen
gauzily
exons
snogs
unclip
moonwalk
payables
albizia
ageist
unmacho
falafel
ependyma
baculum
chakra
reshaven
signage
treen
hommos
fibranne
outhunts
hambones
lesioned
minke
misenrolls
unkinks
apospory
cheffing
bazoos
promos
sonhood
laris
subtask
dioxins
spacey
yeasayers
sitcoms
boychik
voila
roadeos
synth
retines
samosa
futons
schtik
repolled
sended
hemiolia
empanada
treens
amusia
boogied
ripstops
unitards
megalops
postcode
hamboned
ekuele
jumbal
corsetry
newie
plench
arcanums
reinjury
hydroski
pooched
outkills
coactor
unerotic
ficuses
retag
pudibund
flatlong
jettiest
nonfan
introns
airsheds
preedits
doupioni
chazzanim
vacs
chapatis
gussy
jumbals
aliya
haboob
chazzan
sodom
supremo
sifaka
reshined
jeon
kreeps
offramps
flossily
wiggier
skelms
lobber
****er
artsier
ackee
coinvent
buzukia
partyers
noodge
shaloms
trustor
suiter
misroute
wackos
jisms
reechier
bonks
aarrgh
pastie
deco
biennales
lobbers
aerobics
cohosts
paesan
australs
yoks
coedit
perea
toking
amidone
cholo
ethoxies
backrush
rehoboam
lahars
whinges
coleader
quillaja
phonying
agravic
frowsts
solei
omitters
tachyons
harumphs
airchecks
outearns
rouille
keypads
marrano
petsai
naturism
schlumps
pinyin
bialis
backhaul
biblists
cervelas
****er
atap
nabes
septums
auteurs
clochards
veggie
padder
jumpsuit
whacko
psyllium
nerds
preppier
nudzhing
alderfly
agria
rugolas
overmilk
weakside
mopy
avadavats
rosinol
grapey
parador
sabayon
shmuck
arbelest
respot
medflies
bordeaux
viga
linuron
hickies
slinked
schusser
emceeing
renails
diastem
carbolics
nonbody
clozes
caramba
bravi
resite
miniskis
sarans
azlons
rewet
naturist
reductor
outearn
capsomer
quinte
yocking
wacko
staithe
upbows
tenorist
toked
casita
kielbasi
repegged
hairnet
fractus
nickled
kolbasi
temp
oompahs
roomies
coprince
mojos
cholent
unstuffy
comanage
tokers
fuggily
noncolor
panfry
clenchers
slammer
fickly
endocast
vouvary
rebook
lendable
gluons
superpro
hao
bobsledding
sacrums
ditherer
ballute
hardnose
misorder
wrassle
unbulky
dipsos
colonics
gussied
levodopa
subtaxon
unkinked
reg
milneb
sarkier
roadeo
vincibly
letched
kissy
sleazes
forkball
dal
neurine
schemas
gleamers
secalose
inbreds
tumidly
sardanas
erratics
tummlers
yardland
demerges
gyplure
lathi
veejay
renailed
chevres
resecure
chalazia
pretyped
outplot
chloasmata
reracked
uncute
filmer
nam
cutbank
dagwood
coheads
chadar
ovonics
savarins
gravitas
ne
hubbly
antipot
einstein
booklice
largando
resoaked
unsexy
cires
sapotes
sokol
jokier
goombah
tardyon
wildland
fugus
tinklers
subniche
tripods
kbars
bams
latke
mudcat
ironized
magians
vanner
cohosted
rancidly
brickles
plotz
medinas
verites
urial
spliffs
klisters
reslated
calzone
sulu
copyedit
hornist
pommies
ralphs
chugalugged
tellys
argalas
pivotman
carbs
pinkeys
untipped
boobie
agrypnias
antislip
jockettes
antilife
shmear
raggees
tubists
vanning
aubrietas
pfft
yonic
flyoffs
swidden
mache
reinking
quinela
tambak
ostracon
lexis
nitrided
samizdat
anemoses
antijam
gumboots
bracioles
supremos
litotic
zit
muddly
sandspur
schizy
abseiled
choanae
overburn
stuntmen
bouchees
pyknotic
armlocks
emeritae
rebodied
fem
echogram
zazens
midcult
ausform
bothies
piddly
charley
tefillin
clivia
bazoo
replots
qanat
unstoned
tubulins
medusal
glugging
brokered
calorizing
chapattis
respaded
danish
armlock
satay
oversuds
pommie
pishogue
twinset
unbitten
lovebug
ostraca
rejacket
triacs
glancer
lawyered
gluepots
bindi
bullshots
pujah
weepings
contras
malteds
flackery
educible
wasabi
outrows
boubous
chomper
nelly
ballgame
repots
hansa
shoyu
menazons
reteams
wingtips
ultradry
nonfans
gator
pastises
caseloads
daggas
twangers
acrosomes
effigial
busbars
vanned
zappier
pooftahs
hayfield
lapeled
tokomak
decalog
pigout
torot
chevre
lawbook
caky
caudates
beezers
celosia
activize
pignolia
twinjets
skelm
bammed
offkey
nellie
backcasts
discoing
unflashy
spoofy
omitter
dorkier
merde
dhobi
zydeco
acetins
respade
homines
phyllo
upbow
gofer
nonclass
fretter
prefade
moderne
goombays
pong
lekvars
sickouts
***
spatzle
visuals
classists
resited
lowlifer
favisms
monoglot
kev
boathook
grans
sitcom
hyping
kazatsky
lowrider
creeled
glitzes
ouched
gunky
resoaks
muton
framings
bejesus
buddied
drywall
preppy
modem
prefreezing
axonemes
seriffed
futzed
urtext
cabernet
sickee
antileft
camphires
pullup
resketch
respeaks
boobing
spiff
mugfuls
washup
gridder
classisms
takeaway
robotic
pishoges
****ups
nonwords
hokiest
overcure
homosex
scyphi
rebody
misset
bunraku
satays
dorkiest
saimins
canoodled
snelling
dalasis
ruckle
prosses
unguenta
ketols
tranche
cloacas
hogget
urbs
meshuga
dodgems
haggada
fanzines
jettier
flubber
clivias
dolmades
superhit
putzes
khets
octanol
urbias
woopsing
kir
badasses
resodded
spiriest
desktops
notepad
prepreg
ageisms
excimers
tieless
copyread
mindset
dhurrie
botrytis
laterize
naggiest
megapods
resiting
ixoras
sook
retaxing
inscape
rugola
crudites
nellies
redream
overtip
mahoganies
teels
synfuel
diddly
graymail
rimfires
skywalks
overhype
coedits
orzos
yeasayer
themed
restitch
nerd
goombahs
gulags
apicals
partiers
agaroses
sciurid
lezzie
snelled
pangenes
yucky
glugged
reshine
bombax
respaced
hosta
ditsy
trigram
grunge
botanicas
endnotes
choana
bergeres
cleidoic
shmucks
fuelwood
chapatti
shnook
phenoxy
excursus
precut
unitard
arugolas
osteosis
idolator
futzing
veggies
shtetels
unbanned
plews
scrummed
ganjah
yakker
psammons
angeled
beignets
unmesh
comix
ballsier
repoll
rewetted
codirected
comsymp
tenesmic
haloes
loti
backbeats
timbral
highlife
sarkiest
shlumpy
seifs
spackled
spritzed
moviolas
aggros
sunbeamy
caldaria
jumpsuits
substate
coalier
piste
borsht
galoped
nonjury
yechs
vibe
jokiest
playdate
boreen
chablis
ceps
rerack
prefired
kibbe
fencerow
edenic
entropic
yardlands
cheerled
doux
blissing
geoprobe
tostada
yardwork
rechew
startup
soliton
woolhats
ultrahot
zyzzyvas
scamming
codirects
baaskaap
med
endpoint
caretaken
kazatski
unbusted
palship
bushwas
boychiks
alkies
nabbers
yuch
shaley
shelta
casini
preclear
clavus
defocus
detoxing
malacca
flossing
mysids
replot
automan
rachilla
rehabber
poolside
nonnovel
turistas
coleads
comade
decaf
donga
moperies
fritzes
magian
longies
regreens
dioxin
boiseries
urb
glonoin
rumaki
ligers
parazoan
greenie
prelunch
bimorphs
reparks
boresome
reshaved
puja
seg
muesli
expandor
cosied
falces
physed
havarti
sodoms
ixora
miniski
airscapes
replicon
footie
testates
reblends
supermom
keycards
satsumas
shoeless
mosasaur
nonpeak
rehab
spenses
pajamaed
darshans
burrito
agisms
lude
lezzy
antidora
backdating
tailfans
herbed
limpas
lowballs
punnets
zyzzyva
melamed
challas
barnlike
fractal
midlives
whinged
goannas
tostados
ballhawk
subwayed
respace
salsa
respots
muggees
railcar
tramlines
gruyere
getas
nonfact
joual
flyboys
overboil
noodged
psoatic
totalist
diastems
retear
bargello
yatter
tepal
downside
necker
chatchke
antsy
huipil
minivan
cojoins
nonword
clonings
orgone
liposome
paesano
incants
biotoxin
subtest
ruckling
zizit
dunams
popsy
gelatos
goombay
epazote
callaloos
chays
dhals
shmoozes
isograft
mudflow
uncooled
workmate
skylit
subcaste
thebe
bindis
quin
beignet
camphire
tushies
repleads
neurines
folky
roorbach
favism
muchacho
zymograms
yokozunas
xylitol
findable
unsubtly
reavail
infight
fractals
antiatoms
nasties
fileable
jeeped
railbus
newshawk
putz
negronis
ropey
unmerry
leftish
mimeoed
ekpwele
clunkier
munchkin
outhomer
premold
chilidogs
kibbeh
medevac
dampings
yantras
cytosols
wyns
thunks
flacking
hokiness
tylosin
nonbrand
codirecting
retarget
subdural
gimme
zonking
pula
trigrams
kluges
poshly
crumbum
suiters
subbasin
subtasks
bursera
outrowed
downtick
caesars
chicest
reinvade
quillajas
yikes
tuppenny
killies
chay
birdshot
beetlers
mugful
viroid
unwaning
nifties
mismake
fourplex
maud
panmixes
putzing
shanny
airplay
gators
jalapenos
rackful
yentes
softish
amplexuses
boreens
inscapes
prerinse
reracks
solitons
prenoon
taramas
pinkey
reechy
spoofers
townhome
taboulis
electee
tokamaks
drivings
gunkhole
oralisms
shtik
arcsines
bloviate
saggy
tokamak
pineland
endgames
biface
predrill
malanga
nouveau
telomere
codirect
cepes
salals
modelist
reshaves
lathis
skivvied
premolds
redonned
ageism
pedlery
preppily
advect
polyoma
colobi
covin
varoomed
gama
mimeoing
badassed
codec
coesites
subtaxa
overlend
defangs
unakin
pinkened
reggae
nonplay
vestigia
vuggiest
embargoes
brassed
unbathed
broodily
mojoes
caponata
slumism
guanay
vanpool
spazes
kipperer
apospories
prezes
licente
numeracy
outsped
prissed
bothriums
astigmias
pseud
lahar
pachinko
metical
jicama
psammon
kayaked
ammono
shamos
yucking
boondock
shoyus
nonpast
trackway
quillaia
cageful
charleys
tsorriss
borehole
permeant
badder
ria
zoophobes
beezer
ayurveda
sozzled
naw
resplit
tardyons
bleeped
cowflop
smithers
precoded
ecocide
zenaidas
psilocin
abrosias
heimish
outbitch
boiserie
uncoy
marengo
reenroll
wimps
nabber
demeton
patinize
galoping
neckers
pascal
bearhug
nonstory
unbrakes
cutbanks
pomfrest
gasohols
schizzy
dork
chadors
bris
sidebars
jobnames
advected
obtusity
baddest
decalogs
mohelim
achillea
yamalkas
prepill
orzo
offsides
shmaltz
abapical
dashis
congrats
caretake
aciduria
konked
axonemal
abrachia
epistome
scrolled
yok
canephor
souffled
venogram
yuppies
peltered
splodges
askoi
catawba
washups
goopy
pignolis
rebuys
pager
inkjet
debride
chicanos
porcini
arugulas
foxtrots
muchly
quashers
teenybop
tandoori
qats
tomming
imagos
codrives
mayo
stat
boogy
codesigns
marsala
pluvian
daywork
remated
redons
coheaded
allicin
futzes
buzuki
wrassled
scammed
jawboner
muoniums
bouchee
woolwork
meticals
knubbier
haboobs
cockapoo
subsense
halachot
schizier
redux
nuzzlers
ralph
souks
prefaded
bullshot
druggies
uptick
lectin
naches
creeling
outduels
uropygia
halakhas
kayaking
jackrolls
pibals
sardana
deverbal
hologamy
pinkers
zineb
miches
giftware
layup
coloboma
pseuds
catawbas
amanitin
ageists
pelmet
charlies
jivers
cavings
teletext
abbas
yarner
twinsets
pretape
aneurin
misfocus
dhal
scuzzy
blowball
truebred
globby
minivans
umiaq
redreamt
calorize
oldy
goniffs
paradors
ninjas
aubretias
biogas
blurbed
mo
kobs
alencon
carbolic
****tier
dipso
ryokan
chao
aculeus
randiest
nonmusic
foodies
limpsier
boltholes
cripe
feyly
postdive
bacalaos
overfund
reavails
nitinol
remating
aristos
bioethic
lubrical
deorbit
fishbolts
wellies
spintos
collaged
swingmen
stopbank
tamari
greenies
nonimage
bauhinia
meshugge
ballutes
charlie
ruanas
lari
gateau
mantric
zonk
shlep
trank
debrides
cacheted
respeak
apophonies
chakras
leke
postheat
tidiers
bejabers
subtheme
brassing
cimbaloms
presort
antiship
precoup
patagial
haphtara
antibias
vitrics
bilayers
lexemes
antiboss
gibsons
glonoins
mindsets
oxo
jasmin
guitguit
lomein
reshave
cheffed
tweeny
gamay
albizias
brrr
kelly
eggy
triac
menazon
cellmate
lwei
chazzans
savvier
goodie
ponded
syngases
nordic
cowflap
bagger
gazump
punchily
antisex
ulpan
revotes
xanthans
salsas
monaxons
ballgames
paisanas
winless
pinken
jotter
meltdown
blowballs
cosying
splatted
shikker
tombolas
capsomers
topspins
zeks
biali
perdure
ackees
indies
deets
toker
rankings
rotte
hammadas
whackos
yente
remates
chickory
ironize
haut
labrador
quohogs
hosannah
goopier
crumbums
boychicks
nonfatty
beriberi
antiatom
sylis
artsiest
neurulae
coydog
cowpie
odist
tatar
excessed
refences
mirliton
bikie
retagged
pluteus
bathmats
sha
delouser
naggy
baldy
gesneria
plugola
automen
nonpoor
boiloffs
kazachki
pargings
wonks
serifed
bromizing
raylike
advects
talliers
posttest
nonblack
pseudos
regreen
chadars
gruiform
dikey
glancers
lich
motific
spritzer
pentenes
varactor
phytols
toyshops
database
katcinas
scry
soymilks
frazils
millcake
interbed
rawins
advecting
floatel
piriform
patzers
eugenias
mowings
nongay
zemstva
botas
overtips
liger
aculei
crickey
faggoty
pettings
kasbah
druggie
weaselly
stackups
gazumper
dickier
ficus
aramids
jiver
coevolve
resights
binging
hotline
notepads
aubrieta
legong
revoting
altoist
misprice
gelati
sunbelts
fino
dystonic
kickier
diatrons
drapey
classist
preorder
tubulin
firebase
diddley
tympano
roadshow
agarose
rioja
ausformed
druggy
spiffs
cloners
olorosos
prefires
replead
whigs
kheth
subphase
cymbalom
modems
luthiers
wodges
gleamer
searobin
cofounded
slayed
cioppino
blam
yattered
nonvalid
pinitol
ultralow
meticais
misplan
fanzine
schnoz
phobics
souvlaki
quadplex
goanna
coholder
codrive
poofter
burbs
urials
nonleafy
cornrow
whig
thinners
trunkful
beefalo
hickish
downsize
****up
freebase
tonearms
bermudas
spaetzle
vitrain
demerge
euroky
nurser
regaler
shlumped
rom
browband
ulpanim
lovat
wartless
aircheck
bombesins
ankled
pujahs
shiatzu
pantos
nother
rabats
****head
arcsine
kickable
recode
proteans
download
missets
kugel
podlike
vibrioid
arabic
antimale
gonefs
yearends
artsy
crikey
spandex
chitosan
khaphs
joggings
yobbos
etalons
backhauls
nonheme
cagers
gridders
chicer
quantiles
erotize
bothria
acidemias
honchoed
unfamous
moonport
satsuma
renminbi
prossies
saimin
overdub
silvex
acetin
jeeping
arbs
thunking
rewedded
tabulis
crumhorn
yucch
endgame
catteries
poofters
ausubos
citrinin
defanged
klezmer
dribbly
yum
roadie
mm
vouvrays
abasias
prepaste
ditsiest
killie
cimbalom
kibei
hondles
driegh
soring
coled
reraises
perdured
cep
allicins
sulus
phoebus
galabiya
antileak
subfiles
maglev
canephors
deet
tushie
backrushes
vaccinee
anticity
postcoup
bushwa
screwups
tandoor
sheila
outdrag
hursts
leggiero
polyomas
stenoky
antisnob
undular
reslate
jellaba
mihrab
savarin
subcode
calorized
agentive
etchants
flokati
coaly
momzer
smiley
cakier
barchan
mostest
yamalka
startups
dexy
folkies
erotizes
phyllos
acidurias
classism
yahrzeit
pfui
meshugah
leku
cellmates
paleosol
chicano
retaxes
aucubas
yeshivot
vasotomy
improvs
acrasia
pinnies
isopachs
albedoes
aciculum
perdures
apophony
obconic
abseiling
prefreeze
tilaks
citrinins
indie
nonpasts
cor
outvies
quango
reseason
soaper
emic
mopiest
airdates
gofers
unwhite
offtrack
cojoin
mimeos
rebores
pretrims
samosas
haggadas
egyptian
coldcock
popsies
coolths
phenate
hominize
postdrug
physeds
kidnapee
knobbly
vuggier
ecocides
parawing
brisses
ruckles
tels
bigarades
pretapes
partier
cloner
presale
roseslug
jowar
monaxon
tippytoe
bunrakus
armagnac
unadult
postgame
woolhat
orgones
zaddick
interrow
galabieh
dolloped
dorks
dolma
amaretto
classico
subtests
psywars
kugels
tylosins
uncoded
ruana
hyped
liftgate
nonarts
cloque
mentored
upticks
tatars
deadbolt
jowars
amplexus
rubouts
backcast
snogging
misgrade
beefalos
ouguiya
dumbhead
pivotmen
aucuba
pahoehoe
lowlives
canid
palships
prossie
antibug
cacas
cursor
yocked
refelt
sotted
bigfeet
fenthion
burritos
shamas
sporozoa
busbar
pazazz
argala
prefiles
promo
tranqs
boombox
shlump
rosinols
al
subtrend
bluesier
epitaxic
postsync
resplits
seviche
nonself
wimpy
spiffed
reschool
airplays
gawps
condoes
airers
caretaking
arugola
codrove
larkish
shmears
dermoids
muktuks
nancy
multiton
griots
maybes
pereia
schmear
antistat
detox
preflame
muggee
whinge
phonied
etalon
baases
panfried
splodge
minipark
gawp
dryish
cakiest
redecide
unroped
superbad
gonzo
scuzzier
bummest
presleep
matchups
glitz
carwash
sialid
hm
tilak
wingtip
knessets
 
Last edited:
Associate
Joined
28 Jan 2013
Posts
236
FWIW here's my thoughts:
- i5 can do all this in microseconds
- your algorithm is creating and destroying arrays 99.9% of the run time
- your code is very unreadable ;) gonna make the teacher angry, you can use more than one method
- your implementation doesn't meet the requirements as you describe them, e.g. the first word you read is one that should be in position 142 in the final array, but you write it at position 0
 
Soldato
OP
Joined
18 Jun 2010
Posts
6,641
Location
Essex
Okay so I added hardware timers and ran it in RELEASE mode and now it's faster (obviously)



Uploaded with ImageShack.us

The first value is the time it takes to read in all the things and for them to be sorted with the above method.

The second value is the time it takes for me to search through for a specific word. Not that fast I know but it's an algorithm that works partly on chance.

They are in seconds btw.


FWIW here's my thoughts:
- i5 can do all this in microseconds
- your algorithm is creating and destroying arrays 99.9% of the run time
- your code is very unreadable ;) gonna make the teacher angry, you can use more than one method
- your implementation doesn't meet the requirements as you describe them, e.g. the first word you read is one that should be in position 142 in the final array, but you write it at position 0


- Okay
- Is it? Sorry I'm new to C++ this is the first module we've ever done on it.
- I know, I will sort it out before I submit it dw.
- Here's what it says in the specification:
2. A read() member method to read the data from a file. The data should be stored alphabetically as it is read in from file, and not sorted after all of the data has been read.
 
Last edited:
Soldato
Joined
2 Dec 2005
Posts
5,514
Location
Herts
Places I think I can currently optimise: The searching to find the position where it's meant to be inserted.

For this particular problem, you could keep an array of pointers which point to the first occurrence of a letter i.e. an array 26 long: [address of first A..., address of first B..., ..., address of first Z]. Then you could nip straight to the relevant chunk rather than comparing all the words in order every time.

For long lists this could be extended to [first AA..., first AB..., ..., first ZZ] i.e. 676 long.

Although as bam0 says, binary search is probably fastest. And an extension: https://en.wikipedia.org/wiki/Interpolation_search
 
Last edited:
Soldato
OP
Joined
18 Jun 2010
Posts
6,641
Location
Essex
For this particular problem, you could keep an array of pointers which point to the first occurrence of a letter i.e. an array 26 long: [address of first A..., address of first B..., ..., address of first Z]. Then you could nip straight to the relevant chunk rather than comparing all the words in order every time.

For long lists this could be extended to [first AA..., first AB..., ..., first ZZ] i.e. 676 long.

Although as bam0 says, binary search is probably fastest. And an extension: https://en.wikipedia.org/wiki/Interpolation_search

Yep and for the second part of the coursework we have to do pretty much the exact same thing but with a linked list and in that one I will definitely have 26 separate lists for each letter of the alphabet, maybe 26^2.

I was looking up interpolation search, and it does look pretty good I shall look into it. I do a kind of binary chop at the start of my algorithm anyway it's just I control the depth, I find which quarter of the list the word should be inserted into. I can go 1/8ths 1/16ths blah blah and ultimately tun it into a full binary chop however after reading through the specification you don't actually get bonus marks for how fast you put the words into the array.

However you do get bonus marks for the speed of the .exists(string) method. And it's currently finding words in millionths of seconds.

I don't know if that's fast compared to other methods.
 
Back
Top Bottom