Здесь у меня есть список, который, я надеюсь, будет успешно 'Radix Sort' .... Но у меня возникла проблема с моим значением в list
.. Первоначально оно содержало
5.4 1 2 3 10 9 8 8 2
, но когда я ставлю свою очередь на позицию ниже, она внезапно меняется list[6]
на 81
, list[7]
на 0
..
5 4 1 2 3 10 81 0 8 2
Я не знаю, почему они меняются и почему меняются только два элемента .. ПОЖАЛУЙСТА, ПОМОГИТЕ!
#include <iostream>
#include <queue>
Class List
{
private:
int n;
int * list;
public:
List(FILE * _input)
{
fscanf(_input, "%d", &n);
list = new int(n);
for(int i=0; i<n; i++)
{
fscanf(_input, "%d", &list[i]);
}
}
void RadixSort()
{
int div = 1;
queue<int> q[10];
for(int i=0; i<8; i++)
{
for(int j=0; j<n; j++)
{
q[(list[j]/div)%10].push(list[j]);
}
for(int j=0; j<10; j++)
{
int idx=0;
while(!q[j].empty())
{
list[idx++] = q[j].front();
q[j].pop();
}
}
div = div*10;
}
}
};
int main(int argc, char **argv)
{
FILE * input = fopen(argv[1], "r");
List * list = new List(input);
list->RadixSort();
return 0;
}