javascript算法

1.冒泡排序:

规则:前后两两进行比较,如果符合比较的条件,交换两数的位置,直到所有的数据比较完成,且符合从小到大条件,则结束排序。

规律:每一轮比较,都会找出一个较大的数,放在正确的位置。

复杂度:当数据为正序排列时,时间复杂度最小;当数据是倒序排列时,时间复杂度最大。
 
var arr=[4,3,2,1]
//
决定比较几轮 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 tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } alert(arr);//1,2,3,4,5

 2.选择排序

规则:找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推。
规律:每一轮比较,找到最小值,按正序排列。
复杂度: O(n^2)。
var changeE= function (array,i,j){
  var arrayI= array[i];
  array[i] = array[j];
  array[j] = arrayI;
}

var selectionSort = function(array) {
  var length = array.length,// 声明一些将在算法内使用的变量
    indexMin;
  for (var i = 0;i < length -1;i++) {// 外循环
    indexMin = i;// 假设本迭代轮次的第一个值为数组最小值
    for (var j = i;j < length;j++) {// 从当前i的值开始至数组结束
      if (array[indexMin] > array[j]) {//我们比较是否位置j的值比当前最小值小
        indexMin = j; // 如果是,则改变最小值至新最小值
      }
    }
    if (i !== indexMin) {
      changeEle(array, i, indexMin); // 最后,如果该最小值和原最小值不同,则交换其值。
    }
  } // 复杂度是O(n^2)
  return array;
}

 

posted @ 2020-02-03 21:29  warmDoll  阅读(124)  评论(0编辑  收藏  举报