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