Sorteringsalgoritme

Tags:    kortspil sortering skoleopgave

Hej

Jeg skal i forbindelse med en skoleopgave sortere en liste af spillekort, så de ligger i tilfældig rækkefølge. På kurset har jeg kun lært sorteringsalgoritmen Bubblesort, og den duer ikke rigtig til denne opgave. Er der nogen i dette forum, der kan hjælpe med, hvordan man griber sådan en opgave an?

Hilsen
Tina



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Jeg vil nu ikke kalde det for en sortering, men mere find en tilfældig partition. Nøgleordet her er det er tilfældig. Så for at nedbryde problemet:

Hvornår er et spillekort blandet tilfældigt?
- Det kan man vel sige det er hvis alle kortenes placering er tilfældig.

Hvornår er et kort så placeret tilfældig i en blanding?
- Hvis det placering er valgt uden bias. Det vil sige alle kort havde samme sandsynlighed for at ende på første position, anden position, og så videre, til sidste position.

Det giver en ide til en mulig løsning:

1. Vælg tilfældigt et kort som skal være det "øverste".
2. Resten er nu et kort mindre. Vælg et kort blandt resten der skal være det næstøverste.
3. Når der kun er et kort tilbage er man færdig.

Her er et billede der viser det bedre: https://s30.postimg.org/968ouefgx/cards_shuffle.png . En ting du skal bruge er en måde at vælge en tilfældig index mellem i og j på. F.eks. i Java kunne https://docs.oracle.com/javase/7/docs/api/java/util/Random.html måske være hjælpsom.




Der findes ogsaa Quicksort men baade Quicksort og Bubblesort sorterer en liste med tilfaeldige tal saaledes at tallene i listen vil blive sorteret i nummerisk raekkefoelge eller med andre ord tallene vil blive sorteret efter deres vaerdier. Hvis jeg forstaar dig ret, skal du goere det modsatte, saa tallene (kortene) kommer til at staa i en tilfaeldig raekkefoelge.



Uden at have gravet dybere i det, så ville jeg nok have en sorteringskode på hver instans af kortene fra 1..n hvor n er antal spillekort. Sorteringskoden vil så være et tilfældigt tal mellem 1 og n som ikke må være brugt i forvejen på andre kort.


Bare en tanke - selvom den ikke er gennemtænkt :-)



Indlæg senest redigeret d. 30.12.2016 10:17 af Bruger #9814
Din besvarelse gav stof til at tænke opgaven anderledes, og har givet mig fornyet håb om at kunne finde en løsning. Så tusind tak! Jeg skal løse opgaven i code.orgs visuelle programmering, så java linket var for svært for mig. Hilsen Tina




Jeg skal løse opgaven i code.orgs visuelle programmering,


ref https://code.org/educate/applab

This unit introduces the foundational concepts of computer programming, which unlocks the ability to make rich, interactive apps. This course uses JavaScript as the programming language, and App Lab as the programming environment to build apps, but the concepts learned in these lessons span all programming languages and tools.

okay, så du anvender JavaScript, så får du lige et par link til shuffle
http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript

http://www.w3schools.com/js/js_array_sort.asp




Tænk over denne pseudokode:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 02.01.2017 14:23 af Bruger #2695
t