最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 排序動(dòng)畫模擬 冒泡排序

 更新時(shí)間:2012年07月16日 00:27:54   作者:  
在js中,想讓線程sleep一下確實(shí)不是一件簡(jiǎn)單的事情,過多的使用定時(shí)器或者回調(diào)函數(shù),會(huì)讓復(fù)雜,凌亂,這時(shí),可以考慮能否使用隊(duì)列來做一些簡(jiǎn)
而在某些場(chǎng)景中,隊(duì)列確實(shí)像一支奇兵,可以帶來不錯(cuò)的效果,比如配合定時(shí)器使用,可以模擬時(shí)間差效果
復(fù)制代碼 代碼如下:

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

以上是一個(gè)簡(jiǎn)單的實(shí)現(xiàn),在不同的場(chǎng)景,可以做一些適當(dāng)?shù)淖兺?,以做到因地制宜?
下面是一個(gè)模擬冒泡排序的動(dòng)畫,嘗試著使用了一點(diǎn)點(diǎn)觀察者模式,似乎還不錯(cuò)
復(fù)制代碼 代碼如下:

function bubble(){
var obs = [];
function compare(x, y) {
return x.w - y.w;
}
function swap(a, i, j) {
var t = a[i]; a[i] = a[j]; a[j] = t;
}
function proxy(a, i, j){
notify(a[i].id + "-" + a[j].id);
swap.apply(null,arguments);
}
function notify(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 < len; x++) {
for (var y = 0; y < len - x; y++) {
if (compare(arr[y], arr[y + 1]) > 0) {
proxy(arr, y, y + 1);
}
}
}
}
}
}


[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

相關(guān)文章

  • javascript模仿百萬格子小的一小段代碼

    javascript模仿百萬格子小的一小段代碼

    javascript模仿百萬格子小的一小段代碼...
    2007-08-08
  • JavaScript生成簡(jiǎn)單等差數(shù)列

    JavaScript生成簡(jiǎn)單等差數(shù)列

    本文給大家分享使用for循環(huán)實(shí)現(xiàn)js生成簡(jiǎn)單的等差數(shù)列,具體實(shí)現(xiàn)方法,大家參考下本文
    2017-11-11
  • 解決超出JS的安全整數(shù)的限制范圍問題

    解決超出JS的安全整數(shù)的限制范圍問題

    這篇文章主要介紹了解決超出JS的安全整數(shù)的限制范圍問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • DPlayer.js視頻播放插件使用方法

    DPlayer.js視頻播放插件使用方法

    這篇文章主要為大家詳細(xì)介紹了JSx實(shí)現(xiàn)簡(jiǎn)單控制視頻播放倍速,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • javascript動(dòng)態(tài)分頁的實(shí)現(xiàn)方法實(shí)例

    javascript動(dòng)態(tài)分頁的實(shí)現(xiàn)方法實(shí)例

    最近的項(xiàng)目需要添加一個(gè)分頁導(dǎo)航的功能,沒有用網(wǎng)上封裝好的文件,通過JS自己簡(jiǎn)單實(shí)現(xiàn)了效果,這篇文章主要給大家介紹了關(guān)于javascript動(dòng)態(tài)分頁的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2022-06-06
  • js三種排序算法分享

    js三種排序算法分享

    近來無聊,翻出來大學(xué)時(shí)候的數(shù)據(jù)結(jié)構(gòu)教材來看。突然想起,大學(xué)時(shí)候就想過用js實(shí)現(xiàn)基本的排序算法的事情,反正閑來無事,便寫出來后記錄于此
    2012-08-08
  • Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證

    Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • JS實(shí)現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼

    JS實(shí)現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼,可實(shí)現(xiàn)基本的JS響應(yīng)鼠標(biāo)事件動(dòng)態(tài)展開與折疊菜單欄的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 微信jssdk在iframe頁面失效問題的解決措施

    微信jssdk在iframe頁面失效問題的解決措施

    這篇文章主要介紹了微信jssdk在iframe頁面失效問題的解決措施 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 微信小程序?qū)崿F(xiàn)簡(jiǎn)單購物車小功能

    微信小程序?qū)崿F(xiàn)簡(jiǎn)單購物車小功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡(jiǎn)單購物車小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評(píng)論

广安市| 侯马市| 东阳市| 玛曲县| 重庆市| 卫辉市| 罗田县| 治多县| 信宜市| 视频| 辽源市| 通道| 通江县| 固阳县| 奉贤区| 淳安县| 靖江市| 鸡西市| 崇礼县| 秦安县| 察雅县| 桓台县| 定远县| 民和| 清远市| 上虞市| 繁峙县| 阿勒泰市| 灌阳县| 浦北县| 东安县| 安庆市| 黄龙县| 固安县| 黄大仙区| 金秀| 商河县| 昭通市| 德昌县| 宝鸡市| 凤翔县|