13,871
社区成员




int getCV(TColor color)
{
int r,g,b;
r=GetRValue(color);
g=GetGValue(color);
b=GetBValue(color);
return(r*0x00010000+g*0x00000100+b);
}
void qsortbmp(TBitmap *map,int left,int right)
{
if(left >= right) return;
int i = left,j = right;
int temp;
//int key = a[left];//取首元素为关键值
int key = getCV(map->Canvas->Pixels[((left + right)/2)%map->Width][int((left + right) / 2/map->Width)]);
while(i<=j)
{
while( getCV(map->Canvas->Pixels[j%map->Width][int(j/map->Width)])>key&&j>left)
j--;
while(getCV(map->Canvas->Pixels[i%map->Width][int(i/map->Width)])<key&&i<right)
i++;
if(i<=j)
{
temp = map->Canvas->Pixels[i%map->Width][int(i/map->Width)];
map->Canvas->Pixels[i%map->Width][int(i/map->Width)] = map->Canvas->Pixels[j%map->Width][int(j/map->Width)];
map->Canvas->Pixels[j%map->Width][int(j/map->Width)] = temp;
i++;
j--;
}
}
if(left<j) qsortbmp(map,left,j);
if(right>i)qsortbmp(map,i,right);
}