每天学算法
来源:互联网 发布:dnf深渊补丁软件 编辑:程序博客网 时间:2024/05/23 22:09
在这个问题栽了好多个跟头了,躲都躲不掉,下定决心每天学一点算法,坚持每个算法都用js实现。
一、js实现回文串(犯了个无法原谅自己的错误,从它开始,加油!!!)
实现原理:从前、从后同时遍历,比较arr[i]和arr[j],如果都一样就是回文串。
代码:
` var flag = true; var arr = ['a','b','a']; function huiwenchuan(arr){ if(arr.length == 1){ return flag ; }else{ for(var i=0,j=arr.length-1;i<=j;i++,j--){ console.log(i+","+j); if(arr[i] != arr[j]){ flag = false; // console.log(i+","+j) }else{ flag = true; } } return flag; } } huiwenchuan(arr); `
二、快速排序
原理:设定最左边的元素为小兵,分别从最左边个最右边设置游标,先从右向左遍历,如果右边的数大于小兵,位置不变,游标向前移动;如果右边的数比小兵小,那么右边游标不变,值和小兵进行交换,下一步就从左向右遍历.
代码:
/*快速排序*/var arr =[1,2,5,4,12,11,16,8];function swap(arr,i,j){ var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp return arr;}function quicksort(array,left,right){ var i = left, j=right; var pivot = array[i]; while(i<j){ while(i<j && array[j]>=pivot){ j--; } if(i<j){ swap(array, i, j); i++; } while(i<j && array[i]<=pivot){ i++; } if(i<j){ swap(array, i, j); j--; } } //务必加判断语句 否则会导致无限调用 堆溢出 if(i>left){ quicksort(array, left, j-1); } if(j<right){ quicksort(array, j+1, right); } return array;}quicksort(arr,0,8);
阅读全文
0 0
- 每天学一点算法
- 每天学算法
- 每天学一点算法-DFS
- 每天学一点算法-BFS
- 每天学一点算法-Dijkstra算法
- 每天学一点算法-SPFA算法
- 每天学一点算法-快速排序算法
- 每天学一点算法-堆排序算法
- 每天学一点算法-归并排序算法
- 每天学一点算法-二分查找算法
- 每天学一点算法-线性查找算法
- 每天学一点算法-选择排序算法
- 每天学一点算法-动态规划算法
- 每天学一个算法1-冒泡算法
- 每天学一个算法1-二分查找
- 每天学一点flash (41) 椭圆算法
- 【每天学点算法题10.16】由rand7()生成rand10()
- 【每天学点算法题10.16】约瑟夫环问题
- opencv for python(3) 用opencv作图,直线,圆,填充字
- LeetCode——Reverse Linked List
- Transaction check error:
- 解锁VMware pro 14 Mac Os X 13 安装选项下载
- hdu 4101 bfs+博弈
- 每天学算法
- Mac 使用SCP 上传和下载文件
- Maven简介
- js鼠标进度条失去焦点拖动
- 函数
- android7.0 获取uri
- kafka的消息消费机制、consumer的负载均衡、文件存储机制
- 4招搞定greenDAO导致的各类崩溃问题
- shell 基础