首页 / 算法 / 各种算法,冒泡排序,二分查找,去重
各种算法,冒泡排序,二分查找,去重
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了各种算法,冒泡排序,二分查找,去重,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1902字,纯文字阅读大概需要3分钟。
内容图文
![各种算法,冒泡排序,二分查找,去重](/upload/InfoBanner/zyjiaocheng/629/9a85a560780c41b983efcda06cfc68a4.jpg)
1:排序
正常排序,从小到大:
var a = [13, 6, 100, 4, 8];
function b(c,d){
return c-d
}
a.sort(b);
console.log(a,888888)//?[4, 6, 8, 13, 100] 888888
</script>
冒泡排序: (利用循环的方法进行)具体过程可以打debugger查看逻辑
// 由此可以看出,将相邻的两个数依次相比较,大数向后放,小数向前移。即是位置交换实现小数在前,大数在后。经过10次比较后,最终实现重排。
var a = [13, 6, 100, 4, 8, 55, 3, 45];
//外层循环:控制比较轮数 从0开始,次数小于长度-1
function sortNum(a){
for(var i = 1; i < a.length; i++) {
//内层循环:控制每轮比较次数 数组长度-i
for(var j = 0; j <a.length - i; j++) {
//如果当前的元素(j)大于下一个元素(j+1),则交换位置
if(a[j] >a[j + 1]) {
var t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
sortNum(a)
console.log(a, 66666666666) //[3, 4, 6, 8, 13, 45, 55, 100] 66666666666
// 如果从大到小排序的话,则将if(arr[j]>arr[j+1])改为if(arr[j]<arr[j+1])即可
2:二分查找:是一种搜索某个值的索引的算法。
思路:1.将数组折半,分成左右两个数组。
2.判断要查找的数和中间位置数值的大小,来判断要查找的数实在哪一半。
3.之后继续折半查找,直至找到这个数。
https://www.cnblogs.com/zhang-wang/p/7530126.html
var arr = [1, 5, 6, 2, 44, 66, 32, 77, 8, 9]
function search(arr, data) {
var max = arr.length - 1, //最大值
min = 0; //最小值
while(min <= max) {
var mid = Math.floor((max + min) / 2); //中间值
if(arr[mid] < data) {
min = mid + 1;
} else if(arr[mid] > data) {
max = mid - 1;
} else {
return mid;
}
}
return -1; //没找到返回-1
}???
console.log(arr); //[1, 2, 5, 6, 8, 9, 32, 44, 66, 77]
console.log(search(arr, 8)); //4
console.log(search(arr, 104)); //-1
3:去重
实现思路:新建一个数组,遍历要去重的数组,当值不在新数组的时候(indexOf 为 -1)就加入该新数组中;
function unique(arr){
var newArr=[]
for(i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){
newArr.push(arr[i])
}
}
return newArr
}
var arr = [1, 1, 1, 2, 44, 66, 8, 77, 8, 9]
var newArr=unique(arr)
console.log(newArr,6666666666) //[1, 2, 44, 66, 8, 77, 9] 6666666666
3:红黑树,B+树。
内容总结
以上是互联网集市为您收集整理的各种算法,冒泡排序,二分查找,去重全部内容,希望文章能够帮你解决各种算法,冒泡排序,二分查找,去重所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。