JS实现常见的查找、排序、去重算法示例

前端之家收集整理的这篇文章主要介绍了JS实现常见的查找、排序、去重算法示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了JS实现常见的查找、排序、去重算法。分享给大家供大家参考,具体如下:

今天总结了下排序简单的算法

自定义排序】

先寻找一个最小的数,然后依次那这个数和数组中其他数字比较,如果发现比这个数字小的数就把这两个数调换位置,然后再继续寻找下一个最小的数字进行下一轮比较

【线性查找】:一个一个去查找

性能 var t1 = new Date().getTime(); for (var i = 0; i < 10000; i++) { var n = Math.random() * 10000; find2(n,arr.length - 1) } alert(new Date().getTime() - t1);

【二分查找】:不停的分成两个部分,分部分查找

是一种万能方法,不一定是最好的,但是个保底的方法。(分治法)

***中间值 相加除以二,统一偏左,向下取整

e) { return false; } else if (s == e) { if (arr[s] == n) { return true; } else { return false; } } var c = Math.floor((s + e) / 2); if (arr[c] == n) { return true; } else { if (n < arr[c]) { return find2(n,c); } else { return find2(n,c + 1,e); } } } alert(find2(34,arr.length - 1)); //true false

【边界处理】-----递归,一层一层往下找

e) { return fasle; } else if (s == e) { if (arr[s] == e) { return true; } else { return false; } } var c = Math.floor((s + e) / 2); if (arr[c] == n) { return true; } else { if (n < arr[c]) { return find2(n,e); } } } alert(find2(12,arr.length + 1,78));

应用

【查找最小值】

e) { return []; } else if (s == e) { return arr[s]; } else if (s == e - 1) { if (arr[s] < arr[e]) { return arr[s]; } else { return arr[e]; } } var c = Math.floor((s + e) / 2); var l = findMin(s,c); var r = findMin(c + 1,e); if (l < r) { return l; } else { return r; } } alert(findMin(0,arr.length - 1));

【数组去重】

e) { return []; } else if (s == e) { return [arr[s]]; } else if (s == e - 1) { if (arr[s] == arr[e]) { return [arr[s]]; } else { return [arr[s],arr[e]] } } var c = Math.floor((s + e) / 2); var l = removeCopy(s,c); var r = removeCopy(c + 1,e); for (var i = 0; i < r.length; i++) { if (!findInArr(r[i],l)) { l.push(r[i]); } } return l; } document.write(removeCopy(0,arr.length - 1));

【数组排序】

e) { return []; } else if (s == e) { return [arr[s]] } else if (s == e - 1) { if (arr[s] < arr[e]) { return [arr[s],arr[e]]; } else { return [arr[e],arr[s]]; } } //1.切中间值 var c = Math.floor((s + e) / 2); //2.分半处理 var l = mySort(s,c); var r = mySort(c + 1,e); var res = []; while (l.length > 0 || r.length > 0) { if (l[0] < r[0]) { res.push(l.shift()); } else { res.push(r.shift()); } } if (l.length == 0) { res = res.concat(r); } else if (r.length == 0) { res = res.concat(l); } return res; } //调用 document.write(mySort(0,arr.length - 1));

冒泡排序 BubbleSort

循环,每次拿出两个值,两两比较,如果下一个值比目前的小,那么交换位置

外层循环是循环取数,内层循环是两两交换比较

arr[j + 1]) { var tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp } } } return arr; } document.write(BubbleSort(arr));

快速排序】 -------quickSort

取数组中间的数,比中间数小的房中间数左边,比中间数大的放右边,再把两遍链接起来

【散列】 hash 哈希 数组 ------js常用用的结构

添加

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

猜你在找的JavaScript相关文章