Сложная сортировка массива по критериям.

stealthgt

Новичок
Сложная сортировка массива по критериям.

существует массив вот с такими значениями:

fs212
fs213
fs214
ad031
ad032
ad033
gh081
gh082
gh083
.........

c помощью чего можно отсортировать массив...??? что бы на выходе было так:

fs212
ad033
gh081
fs214
ad031
gh083
fs213
ad032
gh082

тоесть чтобы элементы шли через один....
не представляю вообще как это можно реализовать...

есть идеи?
 
Опиши алгоритм требуемой сортировки... А вообще, можно смотреть в сторону usort или uasort. Хотя это непросто.

Или сделать сортировку в два этапа - сначала подготовительный, а потом уже разложить по порядкуж.
 
отсортировать попорядку, как обычно. Потом получить три массива. потом объединить в один.
 
stealthgt
Откуда этот массив такой берется? Не проще ли изначально сделать его двумерным и выводить построчно?
 
а зачем тебе такая сортировка?

сортировка изначально по первой букве идет?

если да, то делать многомерный массив по первой букве. ну а потом уже проще сформировать все
 
Ситуация следующая......
массив уже создан.....

например:

98320001
..... -> 500 элементов
98320500

18590001
...... -> 500 элементов
18590500
45420001
.... -> 500 элементов
45420500


сортировку нужно сделать по первым 4-9 цифрам......
таким образом чтобы первые эти цифры всегда чередовались и не шли попорядку.... концовка не важно в каком порядке идет... даже лучше рандом.

на выходе должно быть чтото такого плана:

98320001
18590025
45420431
98320123
18590029
45420444
98320032
18590321
45420437
...............

-~{}~ 01.09.06 12:42:

про формирование массива нет возможности говорить...

скрипт испопльзуется на gambling сайте......

и нужно именно сделать сортировку... или переделать массив таким образом как показано в примере..
 
Изменить исходные значения, сортировка выдаст:
98320001
9832000118590025
983200011859002545420431
Вернуть в отсортированном значения обратно, получится:
98320001
18590025
45420431
:)
 
Автор оригинала: pnt
Изменить исходные значения, сортировка выдаст:
98320001
9832000118590025
983200011859002545420431
Вернуть в отсортированном значения обратно, получится:
98320001
18590025
45420431
:)
не совсем понял тебя........как ты хочешь сделать......
если можно приведи пример небольшой.....
 
как вариант но требует проверки

сортируем весь массив по возрастанию.
допустим получили:
105
112
113
775
776
799
995
996
999
далее берем первое число, запоминаем, выбрасываем из массива. следующее число мы берем если первая цифра разниться с нашим числом.
то есть: 775 будет следующее, запоминаем, выбрасываем из массива.
далее от 775 пока опять не сменится первая цифра: 995, запоминаем выбрасываем.

если мы прошли по всему массиву и первая цифра не сменилась, значит смотрим смену следующей, второй цифры.
 
я думаю так....
надо сделать каким то образом... перечтение массива...и переформировку....

с учетом того что каждый элемент массива состоит из 500 вариантов....

как сделать чтобы например..... чтение элемента 1, чтение элемента 501, чтение элементы 1001.... запись в массив
потом.. чтение элемента 2, чтение элемента 502, чтение элемента 1002...
и затем запись в массив по нужной последовательности.....
??
если можно то с примером......
 
разбить массив на два такого вида
fs212
fs214
..

fs213
ad031
...

и потом склеить из этих двух один
 
люди пример плиз представьте какой нибудь...

не догоняю как это сделать... перепробывал уже все...

видимо знаний не хватает мне :(
 
stealthgt
а ты покажи как пробуешь...

вообще это делается так: садишься на бумажке вручную делаешь всю сортировку, а потом уже переводишь этот алгоритм в код
 
Сверху