冒泡排序: 依次比较相邻的两个数, 将小数放在前面, 大数放在后面
效率: n(n-1)/2
JavaScript 代码
- var tempArr = [5,4,3,2,7,8,6,1,9,10];
- function bubble(arr){
- var l = arr.length;
- var obj = {time:0};// 遍历次数
- for (var i = 0; i <l-1; i++) {
- for (var j = i+1; j < l; j++) {
- if(arr[i]>arr[j]){
- var temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- obj.time++;
- }
- }
- obj.arr = arr;
- return obj;
- }
- console.log(bubble(tempArr))
快速排序: 首先在数组中找到一个基准值 (一般为数组中间的值), 然后遍历数组中的元素, 小于基准值的放到左边数组, 大于基准值的放到数组右边, 递归以上过程, 直到最后数组的长度为 1.
效率: 比冒泡排序快, 不太稳定. JavaScript 代码
- var tempArr = [5,4,3,2,7,8,6,1,9,10];
- var time=0;
- function quickSort(arr){
- if(arr.length <= 1) return arr;
- var la = [];
- var ra = [];
- var cIndex = Math.floor(arr.length/2); // 基准值索引
- var cValue = arr.splice(cIndex,1);// 基准值
- for (var i = 0,l=arr.length; i <l; i++) {
- if(arr[i]> cValue){
- ra.push(arr[i])
- }else{
- la.push(arr[i])
- }
- time++;
- }
- return quickSort(la).concat(cValue,quickSort(ra))
- }
- console.log(quickSort(tempArr))
- console.log(time)
判断字符串出现最多的字符并统计次数
JavaScript 代码
- var tempStr = 'asdfsdfkjkwernnsfasdfsfsafsff'
- function countStr(str){
- var obj = {};
- for (var i = 0,l = str.length; i <l; i++) {
- if(obj.hasOwnProperty(str[i])){
- obj[str[i]]++;
- }else{
- obj[str[i]] = 1;
- }
- }
- return obj;
- }
- console.log(countStr(tempStr))
数组去重方法一 (也可以用 ES6 的 includes(返回 boolean) 代替 indexOf)
JavaScript 代码
- var arr1 = [1,2,3,11,2,3,'11','11','11','11','11','2','1','11','6',{a:1},{a:1},[1],[1]];
- var unique1 = function(arr){// 返回新数组
- var temp = [];
- for (var i = 0; i < arr.length; i++) {
- if(temp.indexOf(arr[i]) === -1){
- temp.push(arr[i])
- }
- };
- return temp;
- }
- console.log(unique1(arr1))
数组去重方法二
JavaScript 代码
- var arr2 = [1,2,3,11,2,3,'11','11','11','11','11','2','1','11','6',{a:1},{a:1},[1],[1]];
- var unique2 = function(arr){// 修改原来数组
- for (var i = 0; i < arr.length-1; i++) {
- for (var j = i+1; j < arr.length; j++) {
- if(arr[i] === arr[j]){
- arr.splice(j,1);
- j--;
- }
- };
- };
- return arr;
- }
- console.log(unique2(arr2))
数组去重方法三
JavaScript 代码
- var arr3 = [1,2,3,11,2,3,'11','11','11','11','11','2','1','11','6',{a:1},{a:1},[1],[1]];
- var unique3 = function(arr){// 直接修改原来数组
- arr.sort()
- for (var i = 0; i < arr.length; i++) {
- if(arr[i] === arr[i+1]){
- arr.splice(i+1,1);
- i--;
- }
- };
- return arr;
- }
- console.log(unique3(arr3))
统计字符出现的位置
JavaScript 代码
- function appear(str,str_target){
- var n = 0;
- var result = [];
- while(str.indexOf(str_target,n)> -1){
- result.push(str.indexOf(str_target,n));
- n = str.indexOf(str_target,n) + str_target.length;
- }
- return result;
- }
- console.log(appear('abascbascbabasbascbascascbab','ab'));
判断是否是质数
JavaScript 代码
- function isPrime(number) {
- if (typeof number !== 'number' || number<2) {
- // 不是数字或者数字小于 2
- return false;
- }
- if (number === 2) {//2 是质数
- return true;
- } else if (number % 2 === 0) {// 排除偶数
- return false;
- }
- var squareRoot = Math.sqrt(number);
- // 因为 2 已经验证过, 所以从 3 开始; 且已经排除偶数, 所以每次加 2
- for(var i = 3; i <= squareRoot; i += 2) {
- if (number % i === 0) {
- return false;
- }
- }
- return true;
- }
- console.log(isPrime(2))
- console.log(isPrime(3))
- console.log(isPrime(9))
来源: http://www.qdfuns.com/article/27141/6efd490b2a1cf0dd6e3c3b7dd306da41.html