【算法】JavaScript冒泡排序
数字类型:
//冒泡排序 const arr = [2, 4, 5, 6, 1, 3] //外层循环长度减一次 for (let i = 0; i <= arr.length - 1; i++) { //内层循环 最大次数等于外层循环数组长度-1 for (let j = 0; j <= arr.length - i - 1; j++) { // 判断条件 如果数组大于这个数组加一 那么按照顺序替换到指定位置 //j + 1 如果是最大的j,那么到最大的j+1肯定也是最大,所以这个+1也是最大的, //因为他们都加一,并不影响结果,但如果加2或者更多,那么有可能其中至少两个就会变换位置 //如果需要从大到小排列,将if里边改为arr[j] arr[j + 1]) { let temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } } } console.log(arr);
运行结果:
字符串类型:
//冒泡排序 const arr = ['qwe', 'qwer', 'qwert', 'qwerty', 'qw', 'q'] //外层循环长度减一次 for (let i = 0; i <= arr.length - 1; i++) { //内层循环 最大次数等于外层循环数组长度-1 for (let j = 0; j <= arr.length - i - 1; j++) { // 判断条件 如果数组大于这个数组加一 那么按照顺序替换到指定位置 //j + 1 如果是最大的j,那么到最大的j+1肯定也是最大,所以这个+1也是最大的, //因为他们都加一,并不影响结果,但如果加2或者更多,那么有可能其中至少两个就会变换位置 //如果需要从大到小排列,将if里边改为arr[j] arr[j + 1]) { let temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } } } console.log(arr);
运行结果:
混合(字符串+数字)
//冒泡排序 const arr = ['qwe', 'qwer', 'qwert', 3, 1, 2] //外层循环长度减一次 for (let i = 0; i <= arr.length - 1; i++) { //内层循环 最大次数等于外层循环数组长度-1 for (let j = 0; j <= arr.length - i - 1; j++) { // 判断条件 如果数组大于这个数组加一 那么按照顺序替换到指定位置 //j + 1 如果是最大的j,那么到最大的j+1肯定也是最大,所以这个+1也是最大的, //因为他们都加一,并不影响结果,但如果加2或者更多,那么有可能其中至少两个就会变换位置 //如果需要从大到小排列,将if里边改为arr[j] arr[j + 1]) { let temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } } } console.log(arr);
运行结果: