Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Algoritam za prikaz na array

[es] :: PHP :: Algoritam za prikaz na array

[ Pregleda: 1368 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Insider_m
Web developer

Član broj: 290688
Poruke: 98
89.185.221.*



+7 Profil

icon Algoritam za prikaz na array22.03.2012. u 23:27 - pre 147 meseci
Kako sortirati prethodnije definiran array, tako da na kraju bi dobili ovo:



najmanji elemenat u nizu da bude u sredinu, i sve ostale da se rede u formu na zmiju(kao na sliku), tako da poslednji i najveci elemenat bude na pocetak od kocku.
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Algoritam za prikaz na array23.03.2012. u 03:37 - pre 146 meseci
Ovako nesto:

Code (php):

<?php

class SnakeOrder {

     private $size;
     private $array;
     public $matrix;
     private $position;
     private $iteration;

     public function __construct ($array) {
          $this->size      = (int)sqrt(sizeof($array));
          $this->array     = $array;
          $this->matrix    = array (array ());
          $this->position  = sizeof($this->array);
          $this->iteration = 0;
     }

     public function makeMatrix () {
          $this->fill(-1, 0, $this->size);
     }

     private function fill ($x, $y, $length) {
          $i = $dx = $dy = 0;
          $axis = ($this->size+1)/2-1;

          if ($x<=$axis && $y <= $axis) {
               $dx = 1;
          } else if ($x>=$axis && $y<=$axis) {
               $dy = 1;
          } else if ($x>=$axis && $y>=$axis) {
               $dx = -1;
          } else if ($x<=$axis && $y>=$axis) {
               $dy = -1;
          }

          for ($i = 1; $i <= $length; $i++) {
               $this->matrix[$y+$i*$dy][$x+$i*$dx] = $this->array[--$this->position];
          }
          if ($this->position == 0) {
               return;
          }
          if (($this->iteration++) % 2 == 0) {
               $length--;
          }
          $this->fill((int)($x+($i-1)*$dx), (int)($y+($i-1)*$dy), $length);
     }
}
?>
 


Konstruktoru klase prosledjujes sortirtiran niz u rastucem poretku, i sa makeMatrix() napravis matricu.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

[es] :: PHP :: Algoritam za prikaz na array

[ Pregleda: 1368 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.