JS
var srotanimte = null;
var sortMethodMap = {
bubble:{
sort:"bubbleSort",
animateSort:"bubbleSortAnimate",
text:"冒泡排序"
},
quick:{
sort:"quickSort",
animateSort:"quickSortAnimate",
text:"快速排序"
},
insert:{
sort:"insertSort",
animateSort:"insertSortAnimate",
text:"插入排序"
},
shell:{
sort:"shellSort",
animateSort:"shellSortAnimate",
text:"希尔排序"
},
selection:{
sort:"selectionSort",
animateSort:"selectionSortAnimate",
text:"选择排序"
},
cocktail:{
sort:"cocktailSort",
animateSort:"cocktailSortAnimate",
text:"鸡尾酒排序"
},
oddEven:{
sort:"oddEvenSort",
animateSort:"oddEvenSortAnimate",
text:"奇偶酒排序"
},
comb:{
sort:"combSort",
animateSort:"combSortAnimate",
text:"梳排序"
}
};
function $(id){
return document.getElementById(id);//.value;
}
function getSpeed(){
return 200-document.getElementById('speed').value;
}
function randomArrayText( len ){
len = len || 50;
var arr = [];
for(var i=0; i<len;i++){
arr.push( i );
}
arr.sort(function(){
return Math.random() - 0.5;
});
document.getElementById( "arrayText" ).value = "["+ arr.toString() +"]";
};
function getArray(){
var text = document.getElementById( "arrayText" ).value;
try{
return JSON.parse( text );
}catch(e){
alert("数组有错误")
}
}
function playSortAnimate( key ){
var arr = getArray();
srotanimte = new SortAnimate( arr, $('sortAnimateBox') );
$('sortText').innerHTML = key.text;
window[key.animateSort](arr, srotanimte);
srotanimte.play(getSpeed());
}
//正确性测试
function test(){
var arrays = [
[2,0,1,4,3,5,7,8,6,9],
[2,4,6,0,1,3,8,5,7,9],
[0,6,2,4,3,1,8,5,7,9],
[5,2,0,1,6,7,8,3,4,9],
[0,6,1,2,3,7,8,5,4,9],
[0,2,3,8,5,1,7,6,4,9],
[0,4,1,2,3,6,7,8,9,5],
[0,1],
[1,0],
[0],
[1],
[]
];
console.log("排序正确性测试");
for(var i=0; i<arrays.length; i++){
srotanimte = new SortAnimate( arrays[i], $('sortAnimateBox') );
for(var key in sortMethodMap){
console.log(sortMethodMap[key].text, window[sortMethodMap[key].sort](arrays[i]));
console.log(sortMethodMap[key].text, window[sortMethodMap[key].animateSort](arrays[i], srotanimte));
}
}
console.log("结束");
}
//console.log("选择:",cocktailSort([9,1,3,2,4,6,8,5,0,7], srotanimte));
test();