ホームページ >ウェブフロントエンド >jsチュートリアル >jsソートアニメーションシミュレーションバブルソート_javascriptスキル

jsソートアニメーションシミュレーションバブルソート_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:51:491166ブラウズ

いくつかのシナリオでは、キューはまさに驚きの力のようなもので、良い効果をもたらす可能性があります。たとえば、タイマーと併用すると、時差効果をシミュレートできます

。コードをコピーします コードは次のとおりです。

function createDq(){
var dq = [], size = 0;
return {
setDq:function(queue){
dq = queue;
size = queue.length;
},
queue:function(fn){
size ;プッシュ(fn);
},
dqueue:function(){
size --;
return dq.shift();
run:function(fn) {
var me = this, timer;
timer = setInterval(function(){
if(size clearInterval(timer);
}
fn .call(null,me.dqueue());
},30);
}
}
}


上記は次のような簡単な実装です。さまざまなシナリオで適切に行われ、地域の状況に合わせて調整が行われます。
以下はバブルソートをシミュレートするアニメーションです。オブザーバーモードを少し使ってみましたが、なかなか良い感じです。


コードをコピーします コードは次のとおりです:
function bubble(){
var obs = [];
function Compare(x, y) {
return x.w - y.w;
}
関数 swap(a, i, j) {
var t = a[i] = a[j] = t;
関数 proxy(a, i, j){
notify(a[i].id "-" a[j].id);
swap.apply(null,arguments); >}
function Notice(arg){
obs[0].m.call(obs[0],arg);
}
return {
addOb:function(ob){
obs.push(ob);
},
sort:function(arr){
var len = arr.length;
for (var x = 1; x for (var y = 0; y if (compare(arr[y], arr[y 1]) > 0) {
プロキシ(arr, y, y 1);
}
}
}
}
}
}






[Ctrl A すべて選択 注: 外部 Js を導入する必要がある場合は、 を実行するために更新する必要があります]
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。