Сортировка значений в пределах наблюдения (метод «пузырька»)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | * Сортировка значений в пределах наблюдения. * Автор: Mike Lacy (опубликовано, вероятно, в новостной группе SPSS). *************************. Вот достаточно изящное решение. Впрочем, я не знаю, можно ли предложить что-либо более простое в данном случае. Можно пробовать реализовать традиционный алгоритм сортировки SPSS в пределах наблюдения. Фактически, я написал подобный код год или два назад в ответ на чей-то вопрос в новостной группе. Для относительно небольшого числа переменных алгоритм сортировки "пузырьком", по-моему, работает достаточно быстро. К сожалению, непосредственно тот код я найти не могу. Высылаю что-то подобное. * Иллюстрация сортировки "методом пузырька" в пределах наблюдений. * Создадим 100 наблюдений и 10 переменных X1-X10. * . input program . loop #i = 1 to 100 . do repeat x = x1 to x10 . compute x = rv.uniform(0,1) . end repeat . end case . end loop . end file . end input program . exe. * . * Отсортируем значения X1 - X10 по возрастанию. vector x = x1 to x10 . loop #i = 1 to 9 . /* верхняя граница счётчика на единицу меньше числа переменных */ loop #j = #i+1 to 10 . do if x(#i) >= x(#j) . compute #temp = x(#j) . compute x(#j) = x(#i) . compute x(#i) = #temp . end if . end loop . end loop . exe . Разумеется, таким же способом возможно двигать значения в нескольких векторах, изменяя их в зависимости от изменения порядка в векторе X. Это позволит, например, сохранять сведения об исходном порядке значений. Скажем, наименьшее значение (в переменной X1) изначально стояло в переменной X6, следующее - в переменной X3 и т.д. С наилучшими пожеланиями, =-=-=-=-=-=-=-=-=-==-=-=-= Mike Lacy, Ft Collins CO 80523 voice (970) 491-6721 fax (970) 491-2191 |
Related pages
...