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

stealthgt

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

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

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

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

fs212
ad033
gh081
fs214
ad031
gh083
fs213
ad032
gh082

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

есть идеи?
 

Igor aka TiGR

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

Или сделать сортировку в два этапа - сначала подготовительный, а потом уже разложить по порядкуж.
 

AndreyKl

Новичок
отсортировать попорядку, как обычно. Потом получить три массива. потом объединить в один.
 

SelenIT

IT-лунатик :)
stealthgt
Откуда этот массив такой берется? Не проще ли изначально сделать его двумерным и выводить построчно?
 

Sender

Новичок
а зачем тебе такая сортировка?

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

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

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 сайте......

и нужно именно сделать сортировку... или переделать массив таким образом как показано в примере..
 

pnt

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

stealthgt

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

Sender

Новичок
как вариант но требует проверки

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

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

stealthgt

Новичок
я думаю так....
надо сделать каким то образом... перечтение массива...и переформировку....

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

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

PNS

Новичок
разбить массив на два такого вида
fs212
fs214
..

fs213
ad031
...

и потом склеить из этих двух один
 

stealthgt

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

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

видимо знаний не хватает мне :(
 

Sender

Новичок
stealthgt
а ты покажи как пробуешь...

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