Look for the map insertion point using a binary search
This commit is contained in:
parent
099c2f3593
commit
1652dc02ab
19
Alc/ALc.c
19
Alc/ALc.c
@ -654,12 +654,23 @@ void ResetUIntMap(UIntMap *map)
|
||||
|
||||
ALenum InsertUIntMapEntry(UIntMap *map, ALuint key, ALvoid *value)
|
||||
{
|
||||
ALsizei pos;
|
||||
ALsizei pos = 0;
|
||||
|
||||
for(pos = 0;pos < map->size;pos++)
|
||||
if(map->size > 0)
|
||||
{
|
||||
if(map->array[pos].key >= key)
|
||||
break;
|
||||
ALsizei low = 0;
|
||||
ALsizei high = map->size - 1;
|
||||
while(low < high)
|
||||
{
|
||||
ALsizei mid = low + (high-low)/2;
|
||||
if(map->array[mid].key < key)
|
||||
low = mid + 1;
|
||||
else
|
||||
high = mid;
|
||||
}
|
||||
if(map->array[low].key < key)
|
||||
low++;
|
||||
pos = low;
|
||||
}
|
||||
|
||||
if(pos == map->size || map->array[pos].key != key)
|
||||
|
Loading…
x
Reference in New Issue
Block a user