冒泡排序
// 外层循环的次数可以减一/* 因为[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; } } }}