Добро пожаловать. У меня есть метод сортировки radix, который использует массив для прохождения, но должен иметь другой массив (bin), который будет храниться в пустой очереди. Я смущен тем, как я сделаю очередь для бункеров. У меня также есть метод findPlace, который находит место каждой цифры при вызове. Итак, вот что я получил. Может кто-нибудь помочь мне найти то, что мне не хватает? Большое спасибо за ваше время.Radix Sort Java
public static void radix(int [] list){
int [] bin = new int[10];
ArrayQueue<Integer> part = new ArrayQueue<Integer>(); // EDIT What would I do with this queue??
int num = 0;
for(int i=0;i<list.length;i++)
{
bin[i] = 0;
}
for(int pass=0;pass<list.length;pass++)
{
for(int num=0;num<list.length;num++)
{
int digit=findPlace(bin[pass], num);
}
bin[digit].add(list[num]); // add to the bin
}
// Put back into list
for(int h=0; h<10; h++)
{
while(!bin[h].isEmpty())
{
list[num] = bin[queueNum].remove();
num++;
}
}
}
public static int getPlace (int x, int place)
{return x/place % 10;}
Я также способ найти ведро, так что я просто нужно знать, как я хотел бы поставить его в массив, я бы просто сделать это? part.add (getPlace (x, place)) ;?
Да, вам придется инициализировать очередь в вашем методе сортировки; вероятно, неплохо также создать очередь. Что касается вашего алгоритма, это выглядит неправильно, но я недостаточно умен, чтобы сказать, как он должен выглядеть. –
Ну, я прочитал запись в Википедии и нашел там раздел о том, как сделать сортировку радикса с помощью очередей. В соответствии с этим вам не нужно 1, а 10 очередей. Вы прочитали описание (или получили другое описание) и выяснили, что вам нужно сделать? –
Да, но я не хочу делать домашнее задание для вас. Независимо от того, что вы используете для очереди, сделайте массив из 10 из них. Кроме того, см. Обновление ответа, выше. –