From: Carl Worth Date: Tue, 17 Apr 2007 15:19:16 +0000 (-0700) Subject: Maintain bins in sorted order X-Git-Url: https://git.cworth.org/git?p=mnemon;a=commitdiff_plain;h=1165471b98eef572bc87e788e7c3c519b9ef73bf;hp=f2912ab7a76a0362c41ca8b336cc6933f4f9fc30 Maintain bins in sorted order --- diff --git a/mnemon.c b/mnemon.c index a1872bc..f35c0b7 100644 --- a/mnemon.c +++ b/mnemon.c @@ -345,10 +345,16 @@ mnemon_get_bin (mnemon_t *mnemon, for (i = 0; i < mnemon->num_bins; i++) if (mnemon->bins[i].count == count) return &mnemon->bins[i]; + else if (mnemon->bins[i].count > count) + break; mnemon_bins_grow (mnemon); - bin = &mnemon->bins[mnemon->num_bins++]; + bin = &mnemon->bins[i]; + + /* Make room to insert new bin at its sorted location. */ + memmove (bin + 1, bin, (mnemon->num_bins - i) * sizeof (bin_t)); + mnemon->num_bins++; bin_init (bin, count);