zoukankan      html  css  js  c++  java
  • 常见简单算法的实现

    数组相关

    1. 冒泡排序

    var arr = [10,20,24,43,30,28]; 
    for (var i=1; i<arr.length; i++){
      for(var j=1; j<=arr.length-i; j++){
         if(arr[j-1]<arr[j]){
          var tmp = arr[j-1];
          arr[j-1] = arr[j];
          arr[j] = tmp;
         }
      }
    }
    console.log(arr);

    //说明:i 表示比较的轮数,数组长度为n,则比较n-1轮。
         j 表示每轮比较的次数,每比较完一轮,下一轮比较次数少一次。

     2. 去掉数组中的某个元素:如去掉0

    var arr = [10 , 0, 23, 0, 99, 0];
    arrnew = new Array();
    for (var i = 0 ; i < arr.length; i++){  
      if( arr[i] != 0 ){
        arrnew[arrnew.length] = arr[i];
      }
    }
    arr = arrnew;
    console.log(arr);

    3. 反转数组

    var arr = [10,20, 30,50,25];
    for(var i = 0; i < arr.length/2; i++){
      var tmp = arr[i];
      arr[i] = arr[arr.length-1-i];
      arr[arr.length-1-i] = tmp;
       }
    console.log(arr);
    //说明:数组反转是第一个和最后一个元素值交换位置,第二个和倒数第二个...,交换的次数<=arr.length/2,由于i是整数,i从0开始,i<2和i<2.5效果一样

    4. 求数组中最大值

    var arr = [12,23,41,12,33,11];
    var max = arr[0];
    for(var i=0; i<arr.length; i++){
        if(max < arr[i]){
            max = arr[i];
        }
    }
    console.log(max);

    5. 数组倒序

    var arr = [12,23,41,12,33,11];
    var newarr = [];
    var j = 0;
    for(var i=arr.length-1; i>=0; i--){
        newarr[j] = arr[i];
        j++;
    }
    console.log(newarr);

    6. 数组元素拼接字符串

    var arr = [12,23,41,12,33,11];
    var glue = "++";
    var str = "";
    for(var i=0; i<arr.length-1; i++){
        str += arr[i]+glue;
    }
    str += arr[arr.length-1];
    console.log(str);

     循环相关:

    1. 从数字100-200找出第一个能被7整除的数。

    var i = 100;
    while( i <= 200){ if( i%7 == 0){ console.log(i);
         break; }
      i++; }

    2. 求出1-100中所有偶数的和

    算法1:
    var
    i = 1;
    var sum = 0;
    while(i<=100){
      if(i%2 == 0){
         sum +=i;     
      }
      i++;
    }
    console.log(sum);

    3. 画星星

    //画直角三角形
    for
    (var i=0; i<9; i++){ for(var j=0; j<=i; j++){ document.write("*"); } document.write("<br>"); }

    4. 乘法口诀

    document.write('<table border="1" cellspacing="0" cellpadding="0">');
    for(var i=1; i<=9; i++){
      document.write("<tr>");
      for(var j=1; j<=i; j++){
        document.write("<td>");
        document.write(j+"*"+i+"="+j*i);
        document.write("</td>");
      }
      document.write("</tr>");
    }
    document.write("</table>");

    字符串相关:

    1. 查找字符串中所有出现某个子串的位置

    var str = "hello ni hao aasd asd asf ssas fffas";
    var key = "as";
    var index = 0;
    while( ( index = str.indexOf(key, index) ) != -1){
        console.log(index);
        index += key.length+1;
    }

    2. 查找字符串中每个字符出现的次数

    var str = "asdfiqSpfRasskdkfjgi";
    str = str.toLocaleLowerCase();  //不区分大小写
    var obj = {};
    for(var i=0; i<str.length; i++){
        var key = str[i];
        if( obj[key] ){
            obj[key]++;
        }else{
            obj[key] = 1;
        }
    }
    for( var j in obj){
        console.log(j+"出现了"+obj[j]);
    }

     函数相关

    1. 求2个数中最大值:

    var a = 21;
    var b = 33;
    function getMax(a, b){
        return a>b?a:b;
    }
    console.log(getMax(a,b));

    2.求3个数中最大值

    var a = 2221;
    var b = 331;
    var c = 98;
    function getMax(a, b, c){
        return c>(a>b?a:b)?c:(a>b?a:b);
    }
    console.log(getMax(a,b,c));
    说明:三个数比较大小和2个数比较大小是一样的

    3.判断一个数是否是质数

    function isPrimenum(num){
        for(var i=2; i<num; i++){
            if(num%i == 0){
                return false;
            }
        }
        return true;
    }

    4.输入年月日,判断这个日期是该年的第几天

    //判断是否为闰年
    function
    isLeapYear(year){ if(year%4 == 0 && year%100 != 0 || year%400 == 0){ return true; } return false; }
    //获取天数
    function getDays(year, month, day){ var days = day; var months = [31,28,31,30,31,30,31,31,30,31,30,31]; if( month == 1){ return days; } for( var i = 0; i < month-1; i++ ){ days += months[i]; } if(isLeapYear(year)&&(month>2)){ days++; } return days; }
  • 相关阅读:
    【代码笔记】iOS-NSLog的使用
    【代码笔记】iOS-NSJSONSerializationDemo
    【代码笔记】iOS-My97DatePicker日历
    【代码笔记】iOS-mp3的播放
    【代码笔记】iOS-MBProgressHUDDemo
    【代码笔记】iOS-MBProgressHUD
    【代码笔记】iOS-导航条的标题(label)
    【代码笔记】iOS-Label随字自动变大
    OC语言构造方法
    iOS开发UI篇—在ImageView中添加按钮以及Tag的参数说明
  • 原文地址:https://www.cnblogs.com/fanshehu/p/11962637.html
Copyright © 2011-2022 走看看