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; }
我们诚以待人,只为不负年华