Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   сортировка 2-х мерного массива (http://www.flasher.ru/forum/showthread.php?t=66321)

quazare 03.07.2005 18:37

сортировка 2-х мерного массива
 
помогите с грамотным готовым решением!
необходимо сделать сортировку 2-х мерного массива по определенному столбику например по 3-ему.
т.е. нужен готовый алгоритм для функции usort!

вот такой - почемото не проканал :(


function sorting($a, $b)
{
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}

TERRORist 03.07.2005 19:55

и где же тут готовое решение?:(

quazare 03.07.2005 20:27

Цитата:

Сообщение от TERRORist
и где же тут готовое решение?:(

А ты напряги мозги - когда совместно прийдем к общему решению - будет и результат в виде кода, возможно потом все ненужные сообщения постирать .... ;)

Да при твоем подходе - этот подраздел совсем загнется...

P.S. Однако, ты советы и вопросы задаешь.... :D :D

TERRORist 03.07.2005 21:06

модератор тебе судья :)
попробуй использовать дополнительные массивы.

TERRORist 03.07.2005 21:07

имхо такой исходник только тебе понадобится :(

quazare 03.07.2005 21:31

поконкретнее....

TERRORist 03.07.2005 22:12

Цитата:

Сообщение от quazare
поконкретнее....

Я далек от мысли...

-MS- 04.07.2005 00:32

ну так на вскидку, без проверки работоспособности...
PHP код:

function sort($mas,$ii,$jj,$k//mas - входной массив, ixj - размерность, k - столбец по которому сортируем
{
stat=0;
for(
$i=0;$i<=$ii;$i++){
$tmp_m[$i]=$mas[$i][$k]; //заполняем промежуточный массив значениями столбца по которому будем сортировать
$tmp_i[$i]=$i//промежуточный массив с индексами по строкам
}
//сортируем промежуточный массив по возрастанию, соответственно изменится массив индексов
for($i=0;$i<=$ii;$i++){
$min=$tmp_m[$i];
for(
$j=$i;$j<=$ii;$j++){
if(
$min<$tmp_m[$j]){
$tmp_m[$i]=$tmp_m[$j];   //тут у нас сортируется сам массив, обмен 
$min=$tmp_m[$j];            //значениями элементов массива
$tmp_m[$j]=$tmp;           //
$tmp_i[$i]=$j;       //а тут идексы выстраиваются
$tmp_i[$j]=$i;       //
}
}
}
//получили отсортированный массив с индексами по возрастанию
//теперь организуем выходной массив
for($i=0;$i<=$ii;$i++){
$tmp=tmp_i[$i];
for(
$j=0;$j<=$jj;$j++){
$out[$i][$j]=$mas[$tmp][$j];
}
}
return 
$out;


ну что то типа этого... за работоспособность не отвечаю :) не проверял :)
просто предложил возможную реализацию

KBA-KBA 11.07.2005 03:47

array-multisort
 
array-multisort вас спасет... (RM)
---
ну может еще это понадибится :)
PHP код:

/* function RotateArray()
Функция транспонирует (поварачивает на 90 градусов) двумерный массив
KBA-KBA / ColD. [cold@elze.ru]
*/
function RotateArray($table)
{
    foreach (
$table as $key1 => $row)
        foreach (
$row as $key2 => $value)
        {
            
$return[$key2][$key1] = $value;
        }
    return 
$return;



quazare 12.07.2005 14:00

все спасибо! все работает!


Часовой пояс GMT +4, время: 19:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.