H5C3J 学习笔记 part3 Quick Sort
我在复习快速排序算法时,就在想能不能把例子实现得动态一点,不要总是用document,write来write去了,也不要总是用xxx.innerHTML当输出了,我想把它实现得动态一点,然后我就开始找在javascript里面能操纵对象的缓动库,结果就找到了这个货。
[lib.ivank.net](http://lib.ivank.net/)
首先可以肯定这一定是一群ActionScript开发者,利用H5的特性(以Canvas为中心),完整地按照Adobe的标准实现了一遍ActionScript3相同的API,我就说一定会有人做这件事嘛~
之前看到写Canvas的部分的描述,讲到这个组件目前一旦绘制上东西,就失去了自己的标识,好像墨水泼洒到画布上,这样对做应用开发,尤其是游戏,是很难满足需求的。
ivank实现了显示列表,各种绘图,鼠标事件,乃至Box2D,3D模型渲染,真是可喜可贺啊~
然后我就把我的例子改成可以动的了。
[![](https://archive.writeitdown.site/%2525E5%2525B1%25258F%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202013-09-28%252520%2525E4%2525B8%25258B%2525E5%25258D%2525889.00.52.png)](https://archive.writeitdown.site/%2525E5%2525B1%25258F%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202013-09-28%252520%2525E4%2525B8%25258B%2525E5%25258D%2525889.00.52.png)
[Demo](http://hector.ziki.me/quicksort/QuickSort.html)
在此先记录快速排序的核心代码:
function adjustArray(arr, l, r) {
var i = l;
var j = r;
var x = arr[l];
while (i < j) {
while (i < j && arr[j] >= x) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < x) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = x;
return i;
}
function quickSort(arr, l, r) {
if (l < r) {
var i = adjustArray(arr, l, r);
quickSort(arr, l, i - 1);
quickSort(arr, i + 1, r);
}
}