Ocena użytkownikóww: ***** / 0
Nadesłany przez Maciej Lipiński, 11 lutego 2016 01:23
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
insertionsort.js:
//INSERTIONSORT
//sortowanie przez zliczanie
//www.algorytm.org
$(document).ready(function init(){
///////////////////
// INSERTIONSORT //
///////////////////
function InsertionSort(myTable) {
var sortedTable = [];
var temp, inserted, tabLength;
while (myTable.length) {
temp = myTable.pop();
console.log(temp);
inserted = false;
tabLength = sortedTable.length;
for (var i=0; i<tabLength; i++) {
//jezeli w posortowanej tablicy jest element wiekszy od aktualnie wstawianego
if (temp < sortedTable[i]) {
//zrob miejsce dla elementu wstawianego
for (var j=tabLength-1; j>i-1; j--) {
sortedTable[j+1] = sortedTable[j];
}
//wstaw element przed elementem wiekszym
sortedTable[i] = temp;
inserted = true;
break;
}
}
//jezeli nie wstawiono jeszcze elementu to oznacza
// ze aktualnie w tablicy znajduje sie tylko elementy mniejsze od niego
//w takim przypadku wstaw element na koniec
if (!inserted) {
sortedTable.push(temp);
}
console.log(sortedTable);
}
return sortedTable;
}
//////////
// TEST //
//////////
function getRandom(min,max) {
var myRandom = max+1;
while (myRandom > max) {
myRandom = parseInt(Math.random()*(max-min+1) + min);
}
return myRandom;
}
function GenerateTable(min,max,legth) {
var myTable = [];
for(var i=0; i<legth; i++) {
myTable.push(getRandom(min,max));
}
return myTable;
}
var tableBefore = GenerateTable(1,9,10);
console.log(tableBefore);
var tableAfter = InsertionSort(tableBefore);
console.log(tableAfter);
});