冒泡排序
// 外层循环的次数可以减一
/* 因为[1,2,3]做比较的话,i=0的时候需要循环,i=1的时候需要循环,而最后一个数3则不需要循环了,
* 因为前面每一个循环都会和他作比较,相当于它被动的已经和所有数字比过了
* j为什么是i+1呢,因为j就是每一次i后面的那个数字
*/
for(let i=0;i<arr.length-1;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
// 如果左边的小于右边换位子,这是从大到小排序
let a = arr[i];
arr[i] = arr[j]
arr[j] = a;
}
}
}
选择排序
// 选择排序的理论是,每次从数组里面选出当钱最大或者最小的值
for(let i=0;i<arr.length-1;i++){
// 定义一个最小值的下标假如是数组第一项
let min = i;
for(let j=i+1;j<arr.length;j++){
if(arr[j]<arr[min]){
min = j;
}
}
var temp = this[i];
this[i] = this[min];
this[min] = temp;
}
插入排序
// 插入排序
function insertSort(array) {
/*start根据已排列好的项数决定*/
var start = 1;
/*按顺序,每一项检查已排列好的序列*/
for (var i = start; i < array.length; start++, i++) {
/*跟已排好序的序列做对比,并插入到合适的位置*/
for (var j = 0; j < start; j++) {
/*小于或者等于时(我们是升序)插入到该项前面*/
if (array[i] <= array[j]) {
console.log(array[i] + ' ' + array[j]);
array.splice(j, 0, array[i]);
/*删除原有项*/
array.splice(i + 1, 1);
break;
}
}
}
}