Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Детская головоломка с массивами..Помогите..у меня уже голова болит...

2.0K
29 мая 2004 года
BlackMarket
95 / / 10.04.2004
Помогите кто-нить...проблема почти школьная...мозги уже путаются..

Присутствует ряд или массив как вам удобней.
a - a[1],a[2],...
У каждого элемента
есть порядковый номер i и число соответствующее этому номеру.
Нужно получить ряд или массив с последовательностью НОМЕРОВ!
(напр.: m[j] - m[1],m[2],m[3],m[4]...
, выставленных
по признаку убывания(или возрастания.Без разницы) значений данного ряда.

Например у нас есть простейший возрастающий ряд
a[1]=100
a[2]=200
a[3]=300
a[4]=400
...
a[100]=10000

в итоге, после сортировки(получаем последовательность номеров по признаку убывания значения ряда) ряда:

m[1]=100
m[2]=99
m[3]=98
...
m[100]=1

Я думаю что-то вроде такого:
Код:
<?
...
for(j++) {
 a[j]=0;
      for(i++){

             if(a>a[j]){
            m[j]=i;
            a[j]=a;
                   }
               }
          }
...
?>

, ..но это лажа...
4
29 мая 2004 года
mike
3.7K / / 01.10.2002
Не совсем правильно с алгоритмической точки зрения, зато правильно с точки зрения быстрого написания на PHP:

Код:
<?
$a[0]=100;
$a[1]=200;
$a[2]=30000;
$a[3]=400;
$a[4]=10000;

$result=Array();

for ($i=0;$i<count($a);$i++) $a[$i]=str_pad($a[$i],10,0,PAD_LEFT)."~~~".$i;
rsort($a);
for ($i=0;$i<count($a);$i++) {list(,$e)=explode("~~~",$a[$i]);$result[]=$e;}

for ($i=0;$i<count($a);$i++) print $result[$i]."
"
;
?>


Результат:

2
4
3
1
0
2.0K
29 мая 2004 года
BlackMarket
95 / / 10.04.2004
Цитата:
Originally posted by mike
Не совсем правильно с алгоритмической точки зрения, зато правильно с точки зрения быстрого написания на PHP:

Код:
<?
$a[0]=100;
$a[1]=200;
$a[2]=30000;
$a[3]=400;
$a[4]=10000;

$result=Array();

for ($i=0;$i<count($a);$i++) $a[$i]=str_pad($a[$i],10,0,PAD_LEFT)."~~~".$i;
rsort($a);
for ($i=0;$i<count($a);$i++) {list(,$e)=explode("~~~",$a[$i]);$result[]=$e;}

for ($i=0;$i<count($a);$i++) print $result[$i]."
"
;
?>


Результат:

2
4
3
1
0



Выдает ошибку:
Use of undefined constant PAD_LEFT - assumed 'PAD_LEFT' Что делать? Может попроще метод есть, ато я в этом не разбираюсь..вооще

2.0K
31 мая 2004 года
BlackMarket
95 / / 10.04.2004
Короче я сделал по деревянному..привожу код. Хочу услышать мнение ГУру по этому поводу...P(

Код:
<?
$a[0]=100;
$a[1]=2000;
$a[2]=300;
$a[3]=4000;
$a[4]=500;

$tempmark="0";          // метка...
$n=array();//массив, в кот. нужно запсать окончательную последовательность

for($j=(count($a)-1);$j>=0;$j--) $n[$j]=count($a);

for($j=(count($a)-1);$j>=0;$j--) {
 $tempr=0;               //переменная, хранящая промежуточное значение
      for($i=(count($a)-1);$i>=0;$i--){
             if($a[$i]>=$tempr){
        for($k=(count($a)-1);$k>=0;$k--)
        if ($n[$k]==$i) $tempmark=1;//ищем совпадения...и ставим 1.
        if (!($tempmark=="1")) {
                    $n[$j]=$i;
            $tempr=$a[$i];
            $tempmark="0";//не охота разбираться, но здесь бок..
                    }
$tempmark=0;                   
                   }    
               }    
          }
for($i=(count($a)-1);$i>=0;$i--) echo $n[$i]."
"
;
          ?>


Результат:

3
1
4
2
0
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог