У меня есть хеш-таблица структур. Я хотел сортировать содержимое ведер, используя быстрый алгоритм сортировки, и вот код, который я попробовал. Результат hash table bucket content не сортируется вообще.Почему этот быстрый сортировка не сортируется
#define BUCKETS 6000
#define BK_ENTRIES 1024
void q_sort(int,int,int);
typedef struct fpinfo
{
char fing_print[33];
}fpinfo;
метод q_sort
void q_sort(int left, int right,int bk)
{
if(left>=right)
return ;
char l_hold[33], r_hold[33];
int pivot=left;
l_hold=hash_table[bk][left].fp;
r_hold=hash_table[bk][right].fp;
hash_table[bk][pivot].fp=hash_table[bk][left].fp;
while (left < right)
{
while ((strcmp(hash_table[bk][right].fp,hash_table[bk][pivot].fp)>=0) && (left < right))
right--;
if (left != right)
{
hash_table[bk][left].fp=hash_table[bk][right].fp;
left++;
}
while ((strcmp(hash_table[bk][left].fp,hash_table[bk][pivot].fp)<=0) && (left < right))
right--;
if (left != right)
{
hash_table[bk][right].fp= hash_table[bk][left].fp;
left++;
}
}
hash_table[bk][left].fp=hash_table[bk][pivot].fp;
hash_table[bk][pivot].fp=hash_table[bk][left].fp;
hash_table[bk][left].fp=l_hold;
hash_table[bk][right].fp=r_hold;
if ((strcmp(hash_table[bk][left].fp,hash_table[bk][pivot].fp)<=0))
q_sort(left, pivot-1,bk);
if ((strcmp(hash_table[bk][right].fp,hash_table[bk][pivot].fp)>0))
q_sort(pivot+1, right,bk);
}
Вот как я назвал его в главном
fread(hash_table,sizeof(hash_table),1,htfile);
for(int j=0;j<BUCKETS;++j)
{
q_sort(0,BK_ENTRIES-1,j);
}
Вы могли бы сказать, что код слишком долго, но я не мог сделать это любой короче.
EDIT:
Вот декларация hash_table
struct fpinfo hash_table[BUCKETS][BK_ENTRIES];
я решил мою проблему с помощью функции с библиотекой QSort(). Но в случае, если кто-то из вас хочет по-прежнему изучать эту проблему, я обновил ее в качестве ваших предложений.
Узнайте, как использовать отладчик и Е(). – zvrba
@zvrba: Я использовал отладчик и также проверял вывод с помощью printf. Тем не менее я не мог определить проблему. – John
@John, можете ли вы рассказать нам, что такое вывод отладчика? –