Codice dei programmi nella directory:

///File: OrdinaCarte.html
<html> <head> <script language="javascript"> /// By F. Sacco ult. modifica 7/2/2017 var j=1; var carta1=-1; var carta2=-1; var carte = [0,1,2,3,4,5,6,7,8,9]; var scambi=0; function random(N) { return parseInt(Math.random()*N)+1; // a caso fra 1 ed N } function shuffle(a) { /// Mischio il mazzo... var j, x, i; for (i = a.length; i; i--) { j = Math.floor(Math.random() * i); x = a[i - 1]; a[i - 1] = a[j]; a[j] = x; } } function scambiacarte() { var dep=""; var app=carte[carta1]; carte[carta1]=carte[carta2]; carte[carta2]=app; //alert("carta1->"+carta1+", carta2->"+carta2); dep=document.images[carta1].src document.images[carta1].src=document.images[carta2].src; document.images[carta2].src=dep; } function insertcarta() /// inserisce carta1 nella pos carta2 e sposta a sinistra alcuni elementi (x insertsort) { var app; if (carta2 > carta1) // carta2 DEVE stare a sx di carta1 { app=carta1; carta1=carta2; carta2=app; } app=carte[carta1]; var dep=document.images[carta1].src; for (i=carta1-1; i >= carta2; i--) { carte[i+1]=carte[i]; document.images[i+1].src=document.images[i].src; } carte[carta2]=app; document.images[carta2].src=dep; } function ordinato() { var i,j=0; if (carte[9]==0) /// il re vale 0 j++; /// re == 0 for (i=1; i < 9; i++) if (carte[i] == (i+1)) j++; if (j==9) alert("Vettore di carte ordinato in " + scambi + " scambi/inserimenti!!!"); } function evidenzia(i) /// fa vedere in giallo la parte ordinata delle carte al click... /// Occorre un vettore di 10 Carte, riempito e disordinato o con shuffle { var x = document.getElementById("tabella").rows[0].cells; x[i].innerHTML = " OK "; } function scambia(i) /// Occorre un vettore di 10 Carte, riempito e disordinato o con shuffle { var dep=""; var app=0; if (carta1==-1) carta1=i; else if (carta2==-1) { carta2=i; scambiacarte(); carta1=-1; carta2=-1; scambi++; document.sc.scambi.value=scambi; } ordinato(); } function insert(i) /// Occorre un vettore di 10 Carte, riempito e disordinato o con shuffle { var dep=""; var app=0; ///alert("Entrato in insert(i="+i+")"); if (carta1==-1) carta1=i; else if (carta2==-1) { carta2=i; insertcarta(); carta1=-1; carta2=-1; scambi++; document.sc.scambi.value=scambi; } ordinato(); } function scopri(i) { document.images[i].src=random(10)+".bmp"; } function disegna10carte() { var s; s="<table border=2 id=tabella>"; var i,j,k; k=0; shuffle(carte); for (i=0; i < 10; i++) s+="<td OnClick=evidenzia("+ i + ")> " + "Fuori Posto" + " </td>"; s+="<tr>\n"; //s+="<table border=2>"; for (i=0; i < 10; i++) { //j=random(6); s+="<td><img src=" + carte[i] +".bmp OnClick=scambia("+ i + ") ></td>\n"; //k++; } s+="<tr>\n"; for (i=0; i < 10; i++) s+="<td OnClick=insert("+ i + ")> "+ i +" </td>"; s+="<tr>\n"; s+="</table>\n"; s+="<form name=sc>Numero scambi/inserimenti=<input type=button name=scambi value=0></form>"; ///alert(s); // Per debug, metti pure in commento document.write(s); } disegna10carte(); </script> </head> <body> <h2>Programma Javascript per evidenziare algoritmi di ordinamento: <br> 1) clicca su due carte per scambiarle (Bubble/Select Sort)<br> 2) clicca su due numeri (sotto le carte) per inserire carta in tabella e <br> shift a destra delle carte a sinistra della scelta (Insert Sort)<br> 3) clicca su "FUORI POSTO" per metterci "OK" (carta in ordine)<br> 4) premi tasto funzione F5 per ripartire con mazzo disordinato..</h2> </body> </html>
///(Fine file: OrdinaCarte.html)