排序是一个非常实用的功能,队列也是一样实用。

有时候项目中就是会用到它。

举个例子,队列的运用,比如刷小礼物,接收方,会受到很多用户的礼物。为了公平起见,要一个个的显示出礼物效果。这个时候就需要队列了,先进先出。

把它们加入队列中,一个一个的运行。运行一个礼物效果,就移出一个队列数据。

排序呢,也会经常用到,给你一堆数据,有时候需要按照日期排序,有时候要按照销量排序,等等。把无序的数据处理成有序的。

冒泡排序,就是一个很简单的排序实现方式,数据较少的情况下,排序效率会高一些。

这里,比如获取聊天好友列表,把最近聊天的人员优先排在前面。

这样处理,

// 冒泡排序聊天信息
function sortChatList(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j].sentTime < arr[j+1].sentTime) {
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}

经过两轮比较,消息发送时间戳大的就会排在前面了,也就是最新的聊天人员会排在前面。

for (var k = 0;k<json.info.length;k++) { // 初始化
json.info[k].text = '';
json.info[k].messageId = 0;
json.info[k].sentTime = 0;
} for (var i = 0; i < data.length;i++) {
for (var j = 0; j< json.info.length;j++) {
if (data[i].targetId == json.info[j].id) {
json.info[j].text = data[i].text;
json.info[j].messageId = data[i].messageId;
json.info[j].sentTime = data[i].sentTime;
}
}
} json.info = sortChatList(json.info); // 排序处理 var interText = doT.template($("#info_tmpl").text());
$("#info_area").html(interText(json));

继续尝试,改造成选择排序,思路就是,查询最小的数,或者最大的数,将其排在前面。

// 选择排序
function sortChatList(arr) {
var len = arr.length;
var maxIndex, temp;
for (var i = 0; i < len - 1; i++) {
maxIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j].sentTime > arr[maxIndex].sentTime ) { //寻找最大的数
maxIndex = j; //将最大数的索引保存
}
}
temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
return arr;
}

运用才是最重要的,尼玛,其他的排序算法,真心看不懂。

最新文章

  1. 编写可维护的JavaScript代码
  2. mac系统 下 npm 安装 bower报错
  3. XStream使用总结
  4. log4j 总结 精华
  5. linux查看cpu、内存信息
  6. HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
  7. 一个tomcat究竟能接受多少并发
  8. [Angular 2] Passing data to components with &#39;properties&#39;
  9. EntityFramework 简单入个门
  10. shell 脚本实现文件对称加密
  11. 深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)
  12. hdoj4685
  13. Docker启动mysql的坑2
  14. tomcat2章1
  15. JNI使用方法
  16. 中小型研发团队架构实践九:任务调度Job
  17. 【原】移动web资源整理(安卓、ios移动端兼容性问题归整)
  18. 算法笔记_187:历届试题 网络寻路(Java)
  19. “全栈2019”Java第一百零七章:匿名内部类与构造方法注意事项
  20. xshell连接Ubuntu虚拟机

热门文章

  1. Dictionaries
  2. 数位$dp$
  3. Future模式 总结
  4. 隐私:随机选择 MAC 地址
  5. d3的一些总结
  6. luoguP1401 城市(二分答案+最大流)
  7. Ubuntu 环境下的mysql 远程访问,redis 远程访问和设置密码 ,mongo 安装 ,设置用户密码,开启远程访问
  8. 【SRM 717 div2 A】 NiceTable
  9. windows server 打开 FTP 服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。
  10. ubuntu中开启、关闭防火墙