Radix Sort реализована в C ++
Я пытаюсь улучшить свой C ++, создав программу, которая будет принимать большое количество чисел от 1 до 10 ^ 6. Группы, в которых будут храниться числа в каждом проходе, представляют собой массив узлов (где узел - это созданная мной структура, содержащая значение и атрибут следующего узла).
После сортировки чисел по сегментам по наименее значимому значению у меня есть конец одной точки, указывающий на начало другой группы (чтобы я мог быстро получить сохраняемые числа без нарушения порядка). Мой код не содержит ошибок (ни компиляции, ни времени выполнения), но яМы врезались в стену относительно того, как я собираюсь решить оставшиеся 6 итераций (так как я знаю диапазон чисел).
Проблема в том, что яСуть в том, что первоначально числа были переданы функции radixSort в виде массива int. После первой итерации сортировки числа теперь сохраняются в массиве структур. Есть ли способ, которым я мог бы переделать свой код так, чтобы у меня был только один цикл for для 7 итераций, или мне понадобится один цикл for, который будет выполняться один раз, и еще один цикл под ним, который будет выполняться 6 раз перед возвратом полностью отсортированного список?
#include
#include
using namespace std;
struct node
{
int value;
node *next;
};
//The 10 buckets to store the intermediary results of every sort
node *bucket[10];
//This serves as the array of pointers to the front of every linked list
node *ptr[10];
//This serves as the array of pointer to the end of every linked list
node *end[10];
node *linkedpointer;
node *item;
node *temp;
void append(int value, int n)
{
node *temp;
item=new node;
item->value=value;
item->next=NULL;
end[n]=item;
if(bucket[n]->next==NULL)
{
cout < "Bucket " < n < " is empty"