小谈算法

作者: 技术与健康 | 来源:发表于2018-04-14 18:11 被阅读16次

如下图是在移动端最常见的滑动banner.

问题是:3张图片,当如图2,滑动到第三张,继续向左滑动,如何重新回到第一张,从而实现反复循环的滚动。

1.png 2.png

思考后,问题变为如何取到下一张图片

算法1:
//伪代码
imgs= [1.png,2.png,3.png]
for(i=0;i<MAX;i++){

next = MAX % 3 //取余数,3是图片数据的长度imgs.length

}

算出来的next就是下一张图片的索引。

还能想到什么算法呢? 仔细想想,这个和我们常用的一个数据结构非常像,什么呢?

队列,没错就是Queue

算法2:

function Queue(){
        this.dataStore = [];
        this.enqueue = enqueue;
        this.dequeue = dequeue;
        this.front = front;
        this.back = back;
        this.toString = toString;
        this.empty = empty;
}

//入队,就是在数组的末尾添加一个元素
function enqueue(element){
    this.dataStore.push(element);
}
//出队,就是删除数组的第一个元素
function dequeue(){
    return this.dataStore.shift();
}
//取出数组的第一个元素
function front(){
    return this.dataStore[0];
}
//取出数组的最后一个元素
function back(){
    return this.dataStore[this.dataStore.length-1];
}

function toString(){
    var retStr = "";
    for (var i=0; i<this.dataStore.length; ++i) {
        retStr += this.dataStore[i] + "&nbsp;"
    }
    return retStr;
}
//判断数组是否为空
function empty(){
    if(this.dataStore.length == 0){
        return true;
    }else{
        return false;
    }    
}
//返回数组中元素的个数
function count(){
    return this.dataStore.length;
}

var q = new Queue();

q.enqueue("1.png");
q.enqueue("2.png");
q.enqueue("3.png");

循环操作
img=q.dequeue();
q.enqueue(img);

这样通过队列先进先出的特性,反复的出队,进队。因为出队是从队头出,而入队都是从队尾进。因此自然也就是形成不断循环的效果。

关于对列实现的代码,参考https://www.cnblogs.com/tylerdonet/p/5837730.html
作者还在文中提了基于队列做排序的算法,也是不错的选择。

相关文章

  • 小谈算法

    如下图是在移动端最常见的滑动banner. 问题是:3张图片,当如图2,滑动到第三张,继续向左滑动,如何重新回到第...

  • 从并查集Union Find算法谈算法解决实际问题的过程

    从并查集Union Find算法谈算法解决实际问题的过程算法并查集算法寻找路径 从并查集Union Find算法谈...

  • 学者彭兰谈算法社会人的数据化。

    学者彭兰谈算法社会人的数据化。 未来算法...

  • 数据结构&算法小谈

    一、数据结构&算法 二、数据结构名词 三、时间复杂度术语: 时间复杂度:算法执行所需要的多少时间,使用O(......

  • 人工智能越来越智能,你有没有害怕?

    天天说互联网,天天谈信息革命,知道所谓的算法,但是又似乎离我们特别远。 算法?什么算法?算术吗? 信息?与我们有,...

  • 也谈算法

    豆瓣FM,本来叫豆瓣电台,我在09年7月3号获得了使用资格,同年11月底开始全民公测,号称是可以根据你的喜好来调教...

  • php的垃圾回收算法

    编程语言的垃圾收集算法有很多种,今天我们谈一谈常见的集中垃圾收集算法。 引用计数算法 引用计数算法很简单,它实际上...

  • 小算法

    1、二分搜索auto begin=container.begin(),end=container.end();au...

  • 《漫画算法》笔记-上篇

    漫画算法-小灰的算法之旅 魏梦舒(@程序员小灰)著 小灰用漫画(可爱的手绘小仓鼠)的形式,给算法这颗“炮弹”包上了...

  • 简谈常用算法

    写在前面 算法,对于iOS开发者来说,既熟悉又陌生。首先,在iOS开发过程中,对算法要求不高,用到算法时候也是少之...

网友评论

    本文标题:小谈算法

    本文链接:https://www.haomeiwen.com/subject/naqlkftx.html