冒泡排序选择排序和数组反转

544 阅读1分钟

冒泡排序

原理:循环一轮,将当前数据和下一个数据进行比较,选出每次循环最大或最小值;

 let arr = [1,3,2,4,7,6,8,5];        //冒泡排序        for( let i = 0; i < arr.length; i++){           for( let j = 0; j < arr.length-i; j++){               if( arr[j] < arr[j+1]){                   let tmp = arr[j];                   arr[j] = arr[j+1];                    arr[j+1] = tmp;               }           }        }

选择排序

原理:通过比较将最小或最大的数放在当前循环的第一个位置上,直到所有的数成为有序数列,最后一个数无需排序,所以循环.length-1就可以了

let arr = [1,2,5,8,3];
for( let i = 0; i < arr.length-1; i++){            for( let j = i+1; j < arr.length; j++){                if( arr[i] < arr[j]){                   let tmp = arr[i];                   arr[i] = arr[j];                    arr[j] = tmp;               }            }        }        console.log(arr);

反转

原理:将数组的前后对应的部分进行一个数据的交换,当数组长度为奇数时中间的数不参与交换

let arr = [3,7,85,3,9,4,0];
let length = parseInt(arr.length/2);        for(let i = 0; i < length; i++){            let temp = arr[i];            arr[i] = arr[arr.length-1-i];            arr[arr.length-1-i] = temp;        }        console.log(arr);