排序算法
一、冒泡法
前后两个值相比
function bubble(){
var arr = [34,5,7,2,4,6,8];
var len = arr.length;
for(var i=0; i<len; i++){
// 这里 j<len-1 也可以,但j<len-1-i的目换是不用在去比较之前的结果
for(var j=0; j<len-1-i; j++){
if(arr[j] > arr[j+1]){ // 从小向大, 如果从大到小改成 <
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(bubble());
二、选择排序
用当前的所在的数来与之后所有的数来判断找出最小数插入
function selectionSort(){
var arr = [34,5,7,26,8,13];
var len = arr.length;
var minIndex, temp;
for(var i=0; i<len; i++){
minIndex = i; // 循环进来后先指向当前第一个要比较的数,下面循环会将比较小最值的下标赋给它
// 找出之后的最小数
for(var j=i+1; j<len; j++){
if(arr[j] < arr[minIndex]){ // 这里控制排序
minIndex = j;
}
}
// 将最小数排到当前i的位置
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
console.log(selectionSort());
三、插入排序
将一个值与之前的值进行比较如果大于当前值就插入在当前位置
function insertionSort(){
var arr = [34,5,7,26,8,13];
var len = arr.length;
var preIndex, current;
for(var i=1; i<len; i++){
preIndex = i-1;
current = arr[i]; // 存储当前值
while(preIndex >= 0 && arr[preIndex] > current){
console.log(arr[preIndex], current);
arr[preIndex+1] = arr[preIndex]; // 将
preIndex--;
}
arr[preIndex+1] = current;
}
return arr
}
console.log(insertionSort());
快速排序