Topic: Sorteringsalgoritm

Jag har ett fält i en tabell1 som visas antalet poster i en viss kategori i en annan tabell (tabell2).
Nu vill jag sortera dessa för att visa i 3 lika stora columner på en sida, dvs om det finns följande varden i tabell1:

13, 15, 6, 24, 19, 12, 21, 24

vilket gör att de optimala vore ungefär 45 rader på column på sidan, dock är inte detta möjligt eftersom det inte går att sortera in dessa exakt.

så nu vill ja har en sorteringsfunktion som delar upp detta så de hamnar något liknande detta:

13  24  19
15  21  24
6
12

detta bör ge en nogolunda jämn fördelning (kan dock finnas bättre, har inte kollat så noga smile )

hur ska jag få detta att stämma oberoende på hur många olika kategorier jag har?

vart att tänka på är att flera kategorier på samma rad ger lite outnyttjat utrymme mellan dessa.

help smile

Re: Sorteringsalgoritm

Hmm, det var minsann inte helt enkelt. Ska gå och småfundera lite :)

"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: Sorteringsalgoritm

hehe, låter bra de smile för just nu står de ganska still för mig.
om de kan hjälpa är de till http://tv.hellburner.net det gäller (igen) och efter de att man har valt ett antal egna favoriter på den sidan.

Re: Sorteringsalgoritm

http://www.php.net/manual/en/function.sort.php

Re: Sorteringsalgoritm

Vad ska han med den till? :)

"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: Sorteringsalgoritm

Jag vet inte.. Du tror jag orkar läsa hela hans inlägg? wink

Re: Sorteringsalgoritm

Cactuz wrote:

Jag vet inte.. Du tror jag orkar läsa hela hans inlägg? wink

grundförutsättningen för att kunna svara relevant brukar vara det =P

huu, hatar att tänka en massa på jobbiga grejjer när man kan göra så myche annat skojj, amn brukar som halka över på något annat project på något vis.. smile

8

Re: Sorteringsalgoritm

har du löst det än, gribber?
annars undrar jag hur du menar.. ska den sortera efter antal rader det kommer vara vertikalt eller att det ska vara så att alla kanaler på en rad ska totalt omfatta cirka 45 program?

Re: Sorteringsalgoritm

nej jag har inte löst det, inte försökt något för den delen heller, haft annat för mig smile

det jag strävar efter är att få 3 lika stora rader oavsätt vilka kanaler man har valt att visa.

10 (edited by max_w 2003-05-27 12:25)

Re: Sorteringsalgoritm

Varje rad är ju lika hög för varje program oberoende program tycker jag det ser ut som... säg att de är 10px höga, då kan du ta kanalen med flest antal program och multiplicera antal program med just hur höga raderna är för varje program och sätta varje tabell till just den höjden... om jag förståt det rätt

4B 65 6E 6E 65 6C 20 65 20 65 6E 20 67 61 6E 67 73 74 65 72

11

Re: Sorteringsalgoritm

eller så kan du kanske ha en "master table" för en "rad" med kanaler. Sedan sätter du height till 100% för varje kanal...

4B 65 6E 6E 65 6C 20 65 20 65 6E 20 67 61 6E 67 73 74 65 72

Re: Sorteringsalgoritm

hm, nu vet jag inte riktigt vad du menar?
om du väljer tex 7 slumpvis valda program och sparar, då lär dom 3 raderna inte vara lika lång och desto fler program man väljer ju mer brukar de skilja.

13

Re: Sorteringsalgoritm

hmm.. hur skulle arrray'n se ut i första exemplet?
13, 24, 19, 15, 21, 24, 6, 12
eller har jag fel där?

14 (edited by gribber 2003-06-03 16:37)

Re: Sorteringsalgoritm

hm, nu måste jag tänka. smile

allra lättast vore de väl om den såg ut så här:

1 => {
  13
  15
  6
  12
}
2 => {
  24
  21
}
3 => {
  19
  24
}

för då kan man göra något liknande detta sen:

while ($row = each ($sorterad_array)) {
  echo ("<td>");
  foreach ($row AS $chanid => $numprog) {
    print_channellist ($chanid); // funktion som skriver ut kanalen
  }
  echo ("</td>");
}

id för varje kanal kan jag lägga in senare, frågan är ju hur man sorterar smile

15 (edited by gribber 2003-06-19 20:56)

Re: Sorteringsalgoritm

Kom igen nu, jag ska väl inte behöva tänka själv? wink
Jag har så mycket annat för mig, som tex att dricka öl å glassa i solen smile


Edit: BUMP!