1.选择排序
function arr(arr){
var len= arr.length,
minIndex,nu;
for(var i = 0; i < len-1; i++){
minIndex = i;//记录每次循环的第一个数为该次循环的最小值索引
for(var j = i+1; j < len; j++){
if(arr[j]<arr[minIndex]){
minIndex = j;//找到每次循环到的最小值,
}
}
nu = arr[i];
arr[i] = arr[minIndex];//将找到的最小值放在每次循环的最开始的地方;
arr[minIndex] = nu;
}
console.log(arr);
}
原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。
2.冒泡排序
var arr = [1,0,5,6,3,9,22,49,20,11,78,9];
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 temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
原理:随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果
3.插入排序
var insertionSort = function (arr) {
let temp = 0
let j
for (let i = 1; i < arr.length; i++) {
temp = arr[i]
for (j = i - 1; j >= 0; j--) {
if (temp < arr[j]) {
arr[j + 1] = arr[j]
} else {
break
}
}
arr[j + 1] = temp
}
return arr
}
原理:数组中的元素分为已排序区间和未排序区间两部分。初始已排序区间只有第一个元素,插入排序算法的核心思想就是取未排序区间的元素,在已排序区间中找到合适的位置插入并保证已排序区间元素一直有序。重复这个过程,直到未排序区间数据为空。