js--基础算法
2018-08-26 17:26:43来源:博客园 阅读 ()
递归:递归函数是在一个函数通过名字调用自身情况下构成的
/*function jiecheng(n){//n=5
if(n==1){//基点
return 1;
}else{
return n*jiecheng(n-1);
}
}*/
//alert(jiecheng(100));//9.33262154439441e+157 10的157次方。
//2.利用递归求斐波那契数列的前20项
// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,
/*function fb(n){//n:位置
if(n==1 || n==2){//基点
return 1;
}else{
return fb(n-1)+fb(n-2)
}
}
//alert(fb(8));
for(var i=1;i<=20;i++){
document.write(fb(i)+',');
}*/
//1.冒泡排序
//冒泡排序算法的原理如下:
//比较相邻的元素。如果第一个比第二个大,就交换他们两个。
//对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
//针对所有的元素重复以上的步骤,除了最后一个。
//持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
/*var arr=[9,30,4,89,75,456,2,7,-100,9];
var times=0;//次数
for(var i=0;i<arr.length-1;i++){//控制次数 -1:10个数字只需要两两比较9次。
for(var j=0;j<arr.length-i-1;j++){//-i:i循环一次,j循环到底,每一次i的循环都已经排好一个数字。
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
times++;
}
}
console.log(arr);
console.log(times);*/
//2.选择排序
//选择排序(Selection sort)是一种简单直观的排序算法。
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,
直到全部待排序的数据元素排完。
/*var arr=[9,300,4,890,7500,456,20,70,-100,-9];
for(var i=0;i<arr.length;i++){
var minindex=i;//假设最小值的下标
var minvalue=arr[minindex];//假设最小值
for(var j=i+1; j<arr.length;j++){
if(minvalue>arr[j]){
minvalue=arr[j];
minindex=j;
}
}
//如果上面的for循环完成,代表minindex就是最小值的下标。
if(minindex!=i){//如果minindex!=i说明找到了真正的最小值。否则就代表假设的刚好就是最小值。
var temp=arr[minindex]
arr[minindex]=arr[i];
arr[i]=temp;
}
}
console.log(arr);*/
//3.快速排序(去重)
//在数组中截取中间值,中间值可以任意获取。--splice
//剩余的数组项都和中间值进行比较,如果比中间值小,放置在一个数组中,比中间值大,放到另外一个数组中。
//分别对上面的两个数组重复上面的操作--递归
//最终利用concat进行拼接。输出结果
/*var arr=[9,300,4,890,7500,456,20,70,-100,-9];
function quicksort(array){
if(array.length<=1){
return array;
}else{
var midindex=parseInt(array.length/2);//获取中间索引
var midvalue=array.splice(midindex,1)[0];//获取中间值
var left=[];
var right=[];
for(var i=0;i<array.length;i++){
if(array[i]<midvalue){
left.push(array[i]);
}else{
right.push(array[i]);
}
}
return quicksort(left).concat(midvalue,quicksort(right));
}
}
console.log(quicksort(arr));*/
//去重
indexOf去重
/*var arr=[9,301,4,8900,4,7500,4156,20,70,4156,-100,-9,9,9,4,8900,20];
var newarr=[];
for(var i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
console.log(arr);
console.log(newarr);*/
/*var arr=[9,301,4,8900,4,7500,4156,20,70,4156,-100,-9,9,9,4,8900,20];
var newarr=arr.filter(function(value,index,array){
return arr.indexOf(value)==index;//数组项的索引是否等于当前索引。
});*/
console.log(newarr);
var arr=[1,7,5,6,4,1,2,6];
function norepeat(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[j]==arr[i]){
arr.splice(i,1);
arr.length-1;
j--;
}
}
}return arr;
}console.log(norepeat(arr));
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:懒加载
- javascript面向对象入门基础详细介绍 2020-03-29
- 如何用算法删除重复数据 2020-03-18
- 浅谈JS的基础类型与引用类型 2020-02-29
- Javascript排序算法的介绍 2019-10-29
- JavaScript基础知识之数据类型 2019-10-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash