радикальная сортировка в c по числам с плавающей запятой - PullRequest
4 голосов
/ 01 марта 2011

Хорошо, поэтому мне нужно создать основную сортировку для чисел без знака и чисел с плавающей запятой. Моя версия без знака ints работает как надо, но у меня возникли небольшие проблемы с тем, чтобы заставить ее работать для значений с плавающей запятой. По сути, он сортирует значения моего массива по целому значению числа с плавающей запятой, но не сортирует его по десятичному значению. (Пример 36.65234 появится до 36.02311, если он будет первым в несортированном массиве) В этом фрагменте кода я выполняю свои битовые манипуляции и маскировку, и я уверен, что именно в этом моя проблема.

/* For loop to create bin */
for(int i=0; i<n; i++){
    temp_int = (((unsigned int)(list[i]))>>bitwise)&0xff;
    bin[temp_int] = bin[temp_int]+1;
  }

  /*For loop to get map */
  for (int i=0; i<256; i++) {
    map[i+1] = bin[i]+count;
    count = map[i+1];
  }

  /* For loop to copy "sorted" values into other array */
  for (int i=0; i<n; i++) {
    temp_int = (((unsigned int)(list[i]))>>bitwise)&0xff;
    int buf_loc = map[temp_int];
    temp_arr[buf_loc] = list[i];
    map[temp_int] = map[temp_int]+1;
  }

Заранее спасибо!

1 Ответ

5 голосов
/ 01 марта 2011

Радикальная сортировка - это алгоритм линейной сортировки . Может применяться к floating point значениям.

Посмотрите на это:

...