Сегодня я собираюсь обсудить наиболее важные алгоритмы JavaScript и структуры данных. Итак, я надеюсь, что здесь вы узнаете важные вещи. Итак, начнем.

# 01: Проверить простое число

Как мы знаем, простое число делится только на себя и 1. Вот пример →

function isPrime(n){
  var divisor = 2;
  while (n > divisor){
    if(n % divisor == 0){
     return false; 
    }
    else
      divisor++;
  }
  return true;
}
> isPrime(137);
  = true
> isPrime(237);
  = false

# 02: Основные факторы

Временная сложность простых факторов равна O (n). Вот пример →

function primeFactors(n){
  var factors = [], 
      divisor = 2;
  
  while(n>2){
    if(n % divisor == 0){
       factors.push(divisor); 
       n= n/ divisor;
    }
    else{
      divisor++;
    }     
  }
  return factors;
}
> primeFactors(69);
  = [3, 23]

# 03: Число Фибоначчи

Вот пример и временная сложность O (n).

function fibonacci(n){
  var fibo = [0, 1];
  
  if (n <= 2) return 1;
  for (var i = 2; i <=n; i++ ){
   fibo[i] = fibo[i-1]+fibo[i-2];
  }
 return fibo[n];
} 
> fibonacci(12);
  = 144

С рекурсивным и его сложностью: O (2 ^ n).

function fibonacci(n){
  if(n<=1)
    return n;
  else
    return fibonacci(n-1) + fibonacci (n-2);  
}
> fibonacci(12);
  = 144

# 04: Наибольший общий делитель (НОД)

Вот пример GCD →

function greatestCommonDivisor(a, b){
  var divisor = 2, 
      greatestDivisor = 1;
  //if u pass a -ve number this will not work. fix it dude!!
  if (a < 2 || b < 2)
     return 1;
  
  while(a >= divisor && b >= divisor){
   if(a %divisor == 0 && b% divisor ==0){
      greatestDivisor = divisor;      
    }
   divisor++;
  }
  return greatestDivisor;
}
> greatestCommonDivisor(14, 21);
  =7 
> greatestCommonDivisor(69, 169);
  = 1

# 05: Удалить дубликаты

В этом примере показано, как удалить повторяющиеся числа из массива. Пример →

function removeDuplicate(arr){
  var exists ={},
      outArr = [], 
      elm;
  for(var i =0; i<arr.length; i++){
    elm = arr[i];
    if(!exists[elm]){
      outArr.push(elm);
      exists[elm] = true;
   }
  }
  return outArr;
}
> removeDuplicate([1,3,3,3,1,5,6,7,8,1]);
  = [1, 3, 5, 6, 7, 8]

# 06: Палиндром

Здесь я объяснил, как мы можем перевернуть строку. Итак, вот пример →

function reverse(str){
  var rtnStr = '';
  for(var i = str.length-1; i>=0;i--){
    rtnStr +=str[i];
  }
  return rtnStr;
}
> reverse('you are a nice dude');
  = "edud ecin a era uoy"

Другой пример: →

function reverse(str){
  var rtnStr = [];
  if(!str || typeof str != 'string' || str.length < 2 ) return str;
  
  for(var i = str.length-1; i>=0;i--){
    rtnStr.push(str[i]);
  }
  return rtnStr.join('');
}

# 07: Проверьте палиндром

В этом методе мы можем проверить, палиндром или нет. Вот пример →

function isPalindrome(str){
  var i, len = str.length;
  for(i =0; i<len/2; i++){
    if (str[i]!== str[len -1 -i])
       return false;
  }
  return true;
}
> isPalindrome('madam')
  = true
> isPalindrome('toyota')
  = false

# 08: Удалить повторяющиеся символы

Здесь я объяснил, как удалить повторяющиеся символы из строки? Пример: →

function removeDuplicateChar(str){
  var len = str.length,
      char, 
      charCount = {}, 
      newStr = [];
  for(var i =0; i<len; i++){
    char = str[i];
    if(charCount[char]){
      charCount[char]++;
    }
    else
      charCount[char] = 1;
  }
  for (var j in charCount){
    if (charCount[j]==1)
       newStr.push(j);
  }
  return newStr.join('');
}
> removeDuplicateChar('Learn more javascript dude');
  = "Lnmojvsciptu"

# 09: Случайно от 5 до 7

Вот пример →

function rand5(){
   return 1 + Math.random() * 4;
}
function rand7(){
  return 5 + rand5() / 5 * 2;
}

# 10: Перестановки

Это может быть сложно, исходя из вашего уровня знаний об алгоритме.

function permutations(str){
var arr = str.split(''),
    len = arr.length, 
    perms = [],
    rest,
    picked,
    restPerms,
    next;
    if (len == 0)
        return [str];
    for (var i=0; i<len; i++)
    {
        rest = Object.create(arr);
        picked = rest.splice(i, 1);
        restPerms = permutations(rest.join(''));
       for (var j=0, jLen = restPerms.length; j< jLen; j++)
       {
           next = picked.concat(restPerms[j]);
           perms.push(next.join(''));
       }
    }
   return perms;
}

Сегодня больше нет. Если вы хотите узнать больше, поищите в Google и продолжайте учиться. Если я допущу ошибку, сообщите мне. Я сделаю все возможное, чтобы решить эту проблему. Всем спасибо.