经常会在CSDN上看一些文章,但还没有过发表文章,这是我分享的第一篇文章,想了下就分享JavaScript一些常用的算法,互相学习!!!
1.冒泡排序
冒泡排序,很多程序员一入门必定会接触到,原理:从小到大排序的情况下,从数组第一个数开始,跟第二个比较,大的数放在第二个,依次类推第二个跟第三个数进行比较一直到最后一个,得出数组的最后一个数为最大数,重复循环这个操作将数组从索引的最后一位由大到小排序下来。
function bubbleSort(array){
for (var i = 0; i < array.length-1; i++) {
for (var j = 0; j < array.length-i-1; j++) {
if (array[j]>array[j+1]) {
var temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
return array;
}
2.选择排序
选择排序,从小到大排序的情况下,从数组第一个数开始,跟接下来的元素一个进行比较,当遇到小于第一个元素的时候,临时保存这个当前最小数的下标,用临时保存这个下标的数跟接下的数进行对比,重复此步骤获得最小值的下标,再跟第一个元素进行对换,从第二个到最后第二个元素重复上述操作。
function selectSort(array){
for (var i = 0; i < array.length-1; i++) {
var min_index = i,temp;
for (var j = i+1; j < array.length; j++) {
if(array[j]<array[min_index]){
min_index = j;
}
};
temp = array[i];
array[i] = array[min_index];
array[min_index] = temp;
};
return array;
};
3.插入排序
插入排序:从小到大排序的情况下,从第一个元素开始默认已这个元素已经排序,取第下个元素与其上的元素进行比较如果小于该元素则插入在该元素上一个位置,重复这个操作一直到最后一个数。
function inserttionSort(array){
for (var i = 1; i < array.length; i++) {
var key = array[i];
var j = i-1;
while(j>=0&&array[j]>key){
array[j+1] = array[j];
j--;
}
array[j+1] = key;
};
return array;
}
4.数组去重
数组去重,去重的方式很多,我就描述一下我平时经常用的,其原理:创建结果数组对象,同时创建一个循环去重的这个数组,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,为该属性赋值true。
function arrayRemoveRepeat(array){
var new_array = [],obj = {};
for (var i = 0; i < array.length; i++) {
if (!obj[array[i]]) {
new_array.push(array[i]);
obj[array[i]] = true;
};
};
return new_array;
}