From 33d73dd514c06a3de08b05aac955150fe92d716e Mon Sep 17 00:00:00 2001 From: yrutschle Date: Fri, 8 Apr 2022 21:09:45 +0200 Subject: [PATCH] invert distance counting --- hash.c | 10 +++++----- hashtest/htest | Bin 25032 -> 24992 bytes 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hash.c b/hash.c index aaed19d..5ad862a 100644 --- a/hash.c +++ b/hash.c @@ -130,13 +130,13 @@ hash_item hash_find(hash* h, hash_item item) /* Returns DIB: distance to initial bucket */ -static int distance(int actual_index, hash* h, hash_item item) +static int distance(int current_index, hash* h, hash_item item) { int wanted_index = hash_make_key(h, item); - if (wanted_index <= actual_index) - return wanted_index - actual_index; + if (wanted_index <= current_index) + return current_index - wanted_index; else - return wanted_index + hash_size - actual_index; + return current_index - wanted_index + hash_size; } @@ -153,7 +153,7 @@ int hash_insert(hash* h, hash_item new) hash_item curr_item = gap_get(hash, index); while (curr_item) { - if (distance(index, h, curr_item) > distance(index, h, new)) { + if (distance(index, h, curr_item) < distance(index, h, new)) { gap_set(h->data, index, new); #if DEBUG fprintf(stderr, "intermediate insert [%s] at %d\n", &new->client_addr, index); diff --git a/hashtest/htest b/hashtest/htest index 224255b7ee9a2aea7a2f835684c6ffb12314a67f..eab1b60f7d1bc0d7ba3af2da9ddbeac2c561bfe5 100755 GIT binary patch delta 3273 zcmZ8j3s6+o89sLx;sUbE0_y@2c7^qYy0RUOPyE@TZB61dA?Zw0+c8ep^x>q4Sqi4H9W>f8CLzS&JM4%QG>owpVynEDGqxyG;q7N ztmv;E`(9A2xT8uQn=ROle?vGWdl1Pm))3XCh&Dee?Bj8uW{xFUi+k%;M{G_#Jtmwj>(FF zPPAe!!YXb!wBS3#bIkD6gKsxfhwco8QDNm8NX>8ps|KgZwjYTQ(&oD9lh1FIP?6BU zaP=C0B>9Ip1yUsa&JA=nA z$HWjU1$k)Y0X6uHUsfYK1W{e%$dIp~v7vt3-1o~adn4QJUQ^Ze&^4PT`P;xjdv8H1}}Xd_2zj(kL`sC`c}#hmBTO@T!Ct! zhFUA-&xYRlI|y~CgO!y&m2Iu~4QeLJJ@J>|MdVZI8W?hEZIpY|nhd#*ZLGU27OAq! z!zTY3l+WvxA0iB1BoPNEheooCcjn^&veyyR*onh65W10}9J)tsmV$IJ zu1?n{H~`9`dvt}xYXpN>uFgGC`eV6z4Hgh(f?3aMk0EQo%*jpYN!4I zR=CBku^95tCza2}>1|7%FixjVE5^KJS~=!D(_+G1>bCZ$e*P{NmJ%$U!Mri-^Y-?{JAvIED0mFcQE{keVJ{pat<&WuU ztD*m}y_8D!ww4oUi3Pt6w^Vf!=pI&82d+LpunP^IKccGVz~|q=O#%Kr;7h=%qpErm z=muT{?nG=mI^f2>cLHs9AqOr7UIdzu{U~q|FdKgRfu(xlBu}Aw>p^S>?g8fCSJk5| zFz^J>4V(lX1$t>@Mv-p)ZTgoPPGLR$V#e&e4D1_C_;yHGZNTsHZCY5kLN|Ye{sEi6dhgkX-d&7 z;Wb)PWJ&))8o|v&4nlPH4t=I*xo-0)eYL1S_v|P=1;`qsR{%L<^nOvH?u{{8;3&|2 zK1QDeTpyzw9eGb=!2UgyU=K=!gyMs7z2Ji2(mA&XH~_BohN@l?XlhZu^=V^iXv#|C zCQXBFBp)71sW7u5WeZl-Fc+e$Xa3fJ-nvs0f2wU+bYy{3w`F>?(D|B9u+ol_Qo;Jx z-I7!xkB)!833J0zmyk=3EUm!&>C*W^4oz_fu %WBro599AE=E3i)Y6bsg9sb@hF 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 R)|f%c*DvLI=+62D{|9}iZ#)11