X Tutup
DataItem = function(pos, h, col) { this.value = h this.position = pos this.color = col } DataItem.prototype.clone=function() { var newitem = new DataItem(this.position,this.value,this.color) //make a copy return newitem } DataItem.prototype.getValue=function() { return this.value } DataItem.prototype.getColor=function() { return this.color } DataItem.prototype.getPosition=function() { return this.position } DataItem.prototype.setValue=function(newh) { this.value = newh } DataItem.prototype.setPosition=function(newp) { this.position = newp } DataItem.prototype.setColor=function(newc) { this.color = newc } BubbleSortModel = function() //construct the model { } BubbleSortModel.prototype.init = function(ctl) { this.mycontroller = ctl this.valuelist = new Array() var howmany = 15 for (var i=0; i0; passnum = passnum-1) { for (var i=0; i this.valuelist[i+1].getValue()) { var temp = this.valuelist[i] this.valuelist[i] = this.valuelist[i+1] this.valuelist[i+1] = temp this.script.push(this.makescene()) } this.valuelist[i].setColor("black") this.valuelist[i+1].setColor("black") this.script.push(this.makescene()) } } return this.script } BubbleSortModel.prototype.makescene = function() { var newscene = new Array() for (var idx=0; idx0 && (this.valuelist[position-1].getValue() > currentvalue.getValue())) { this.valuelist[position-1].setColor("red") this.script.push(this.makescene()) this.valuelist[position-1].setColor("black") this.valuelist[position] = this.valuelist[position-1].clone() //this.barlist.bars[position-1] = currentvalue this.valuelist[position-1].setValue(0) this.script.push(this.makescene()) position = position-1 } this.valuelist[position] = currentvalue this.valuelist[position].setColor("blue") this.script.push(this.makescene()) this.valuelist[position].setColor("black") } this.script.push(this.makescene()) return this.script } InsertionSortModel.prototype.makescene = function() { var newscene = new Array() for (var idx=0; idx0; fillslot = fillslot-1) { var positionOfMax=0 this.valuelist[positionOfMax].setColor("yellow") this.valuelist[fillslot].setColor("blue") this.script.push(this.makescene()) for (var i=1; i this.valuelist[positionOfMax].getValue()) { this.valuelist[positionOfMax].setColor("black") positionOfMax = i this.valuelist[i].setColor("yellow") this.script.push(this.makescene()) } else { this.valuelist[i].setColor("black") this.script.push(this.makescene()) } } var temp = this.valuelist[fillslot] this.valuelist[fillslot] = this.valuelist[positionOfMax] this.valuelist[positionOfMax] = temp this.script.push(this.makescene()) this.valuelist[fillslot].setColor("black") this.script.push(this.makescene()) } return this.script } SelectionSortModel.prototype.makescene = function() { var newscene = new Array() for (var idx=0; idx 0) { for (var startposition = 0; startposition < sublistcount; startposition = startposition+1) { var gap = sublistcount var start = startposition this.valuelist[start].setColor("red") for (var i=start+gap; i=gap && this.valuelist[position-gap].getValue()>currentvalue.getValue()) { this.valuelist[position] = this.valuelist[position-gap].clone() this.valuelist[position-gap].setValue(0) position = position-gap this.script.push(this.makescene()) } this.valuelist[position]=currentvalue this.script.push(this.makescene()) } for (var clearidx=0; clearidx1) { var mid = start + Math.floor(len/2) this.chunkcolor(start,mid-1,"red") this.script.push(this.makescene(this.valuelist)) this.chunkcolor(start,mid-1,"black") this.domergesort(start,mid-1) this.chunkcolor(mid,end,"blue") this.script.push(this.makescene(this.valuelist)) this.chunkcolor(mid,end,"black") this.domergesort(mid,end) var i=start var j=mid var newlist = Array() while (i= pivotvalue && rightmark >= leftmark) { alist[rightmark].setColor("black") rightmark = rightmark - 1 if (rightmark >= leftmark) { alist[rightmark].setColor("blue") this.script.push(this.makescene(this.valuelist))} } if (rightmark < leftmark) done = true else { temp = alist[leftmark] alist[leftmark] = alist[rightmark] alist[rightmark] = temp this.script.push(this.makescene(this.valuelist)) alist[leftmark].setColor("black") alist[rightmark].setColor("black") } } var temp = alist[first] alist[first] = alist[rightmark] alist[rightmark] = temp alist[first].setColor("black") alist[rightmark].setColor("red") this.script.push(this.makescene(this.valuelist)) this.chunkcolor(0,this.valuelist.length-1,"black") this.script.push(this.makescene(this.valuelist)) return rightmark } QuickSortModel.prototype.chunkcolor=function(start,end,c) { for (var clearidx=start; clearidx<=end; clearidx++) this.valuelist[clearidx].setColor(c) } QuickSortModel.prototype.makescene = function(somearray) { var newscene = new Array() for (var idx=0; idx
X Tutup