算法几种方法

7种算法  3种数组方法  声明变量提升 &&和||的回顾

1.冒泡排序

2.sort方法

3.选择排序

4.递归算法  函数内部自己调用自己就是递归算法  但是得设定一个结束  不然会陷入死循环

5.快速排序 可以无序找一个值作为参考值  相比较 建立两个空数组  比参考值小的放在左边  比参考值大的放在右边  左右边两边再进行这种操作 利用了递归 不断调用自己得到这种效果

6.贪心算法 

7.折半查找 必须是有序的 对半取值和选取的值进行对比 缩小区间找出这个数

声明变量的提升:任何声明变量和声明函数都会被提升到当前函数顶部

&& 且 两者假取前者假  两真取前者真

|| 或 取最先出现的非0得数  两假取后者假





具体代码

//算法:解决问题的方案;解决问题的一系列清晰的指令

//特性1.时间有穷性

//   2.答案唯一性

//1.冒泡排序

var arr = [5,3,7,8,4];

for (var i = 0; i < arr.length-1; i++) {

for (var j = 0; j < arr.length-i-1; j++) {

if (arr[j] > arr[j+1]) {

var temp = arr[j+1];

arr[j+1] = arr[j];

arr[j] = temp;

}

}

}

console.log(arr);

//冒泡排序总共需要排序n-1趟,每趟比较n-1-趟数这么多次;每趟排序可能交换多次元素,找到其中一个元素的最终位置每次比较都是相邻元素之间的大小比较

//2.sort 方法:js数组的一个方法

var arr = [1,10,2,35,35,0,49];

//第一种

//要求按照数字的从小到大排序

// arr.sort();

// console.log(arr);

// arr.sort(function(obj1,obj2){

// if (Number(obj1) > Number(obj2)) {

// return 1;  //desc

// }else if(Number(obj1) < Number(obj2)){

// return -1;  //asc

// }else{

// return 0;  //same

// }

// });

// console.log(arr);

//第二种

arr.sort(function(obj1,obj2){

return obj2 - obj1;

});

console.log(arr);

//选择排序

// var arr = [0,3,4,5,15,23,5,43,34]

// //比较n-1趟

// for (var i = 0;i < arr.length - 1; i++) {

// //假定第一个元素是最大值

// var max = 0;

// //找到了某一趟的最大值

// for (var j = 1; j < arr.length - i;j++ ) {

// if (arr[max] < arr[j]) {

// max = j;

// }

// }

// //放到合适的位置

// if (max != arr.length - i -1){

// //交换这两个位置的元素

// var temp = arr[max];

// arr[max] = arr[arr.length - i -1];

// arr[arr.length - i -1] = temp;

// }

// }

// console.log(arr);

//

// for循环 n-1趟{

// 假设下标为0最大 max = 0

// 循环  比较假定的最大数据后面的数字的大小{

// 记录这趟的最大值

// }

// 查看是否需要交换(数组长度 - 趟数 - 1)

// }

//4.递归算法

//递归跟函数分不开,函数内部自己调用自己,就叫递归

// function fun(){

// console.log(11);

// fun();

// }

// fun();

//递归必须有一个出口

// var num = 0;

// function fun(){

// num++;

// console.log(num);

// if (num > 100) {

// return;

// }

// fun();

// }

// fun();

//求n!  递归也是一个算法

//规定0! = 1; 求一个数的阶乘

// function calculate(n){

// if (n == 0) {

// return 1;

// }

// return n * calculate(n-1);

// }

// var result = calculate(5);

// console.log(result);

//5.快速排序

//基数

//

// var arr = [4,1,6,2,3,10,9,0,19]

// //快速排序的函数

// function quickSort(oldArray){

// if (oldArray.length <= 1) {

// return oldArray;

// }

// //取出一个基数

// //那个基数的下标

// var privosIndex = Math.floor(oldArray.length / 2);

// //这个基数需要从数组里面剔除出来

// var privos = oldArray.splice(privosIndex,1)[0]; //splice返回的是一个数组

// var left = [];

// var right = [];

// for (var i = 0; i < oldArray.length;i++) {

// if (oldArray[i] < privos) {

// left.push(oldArray[i]);

// }else{

// right.push(oldArray[i]);

// }

// }

// return quickSort(left).concat(privos,quickSort(right));

//

// }

// var result = quickSort(arr);

// console.log(result);

//quickSort()---数组排序

//6.贪心算法(有缺陷)

//20美元  10美元  5美元  1美元

//如何用最少数量的纸币凑成96美元.

//var num1 = parseInt(96 / 20);

//var num2  =parseInt((96 - num1 *20) / 10) ;

//var num3 = parseInt((96 - num1 * 20 - num2 * 10) / 5);

//var num4 = (96 - num1 * 20 - num2 * 10 - num3 * 5) / 1;

//7.折半查找

//折半查找:不是排序算符,是查找方法,能够进行折半查找的前提是这个数组是有序的

var arr = [1,2,4,5,8,10,30,44,66,76];

//需求查看数字30 在arr中的下标是多少

//indexOf()

// function SWNIndexof(arr,num){

// for (var i = 0;i < arr.length;i++) {

// if (arr[i] == num) {

// return i;

// }

// }

// return -1;

// }

// var result = SWNIndexof(arr,30);

// console.log(result);

//折半查找

var min = 0;

var max = arr.length - 1;

for (var i = 0; i < arr.length / 2; i++) {

mid = parseInt((min + max) / 2);

if (arr[mid] > 30) {

max = mid;

}else if(arr[mid] < 30){

min = mid + 1;

}else{

console.log(mid);

break;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容