码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡算法

时间:2019-05-15 12:49:43      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:排列   toms   class   需求   col   ret   打印   pre   scl   

冒泡排序:

需求:对一个数组内元素进行从大到小或者从小到大排序;

前提:要知道肯定是双重循环,单循环无法排列;

方法:(比如从大到小排列)遍历这个素组,对n 与 n+1(相邻的)元素进行比较,如果n < n+1(即前一个小于后一个) 那么交换它们俩的位置;前面所说的是内循环,那么这样的内循环要循环整个数组长度;

// 冒泡排序

const sortArr = [23, 22, 13, 54, 24, 76, 99];
// js 提供的方法 sort
const afterSortArr = sortArr.sort((a, b) => {
  return a - b;
})
console.log(afterSortArr, ‘js sort 方法排序,其原理也是冒泡排序‘)
const sortArrSpecial = [0, 1, 1, 1, 1, 23, 22, 13, 54, 24, 76, 99, 0, 0, 0, 0, 0, 1, 1];
// js 提供的方法 sort
const afterSortArrSpecial = sortArrSpecial.sort((a, b) => {
  return a - b;
})
console.log(afterSortArrSpecial, ‘js sort 方法排序,其原理也是冒泡排序特殊版‘)

// 冒泡排序 传统方法 (每次比较相邻位置,如果从大到小排列,每次比较完如果小与都互换位置,反之亦然)
const customSortArrDesc = [23, 22, 13, 54, 24, 76, 99];
const customSortArrDescLen = customSortArrDesc.length;
for( let i = 0; i < customSortArrDescLen; i ++) {
  for(let j = 0; j < customSortArrDescLen - 1; j ++) {
    // console.log(customSortArrDesc[j]) // 这里可以打印出看下,交换位置后下次取值还会是上一次取得值
    if(customSortArrDesc[j] > customSortArrDesc[j + 1]) { // 这一行决定从大到小排列还是从小到大排列
      let temporary = customSortArrDesc[j]; // 临时存放
      customSortArrDesc[j] = customSortArrDesc[j + 1];
      customSortArrDesc[j + 1] = temporary;
    }
  }
}
console.log(customSortArrDesc, ‘js 双重for循环方法从大到小冒泡排序‘)
// 升序
const customSortArrAsce = [23, 22, 13, 54, 24, 76, 99];
const customSortArrAsceLen = customSortArrAsce.length;
for( let i = 0; i < customSortArrAsceLen; i ++) {
  for(let j = 0; j < customSortArrAsceLen - 1; j ++) {
    // console.log(customSortArrAsce[j]) // 这里可以打印出看下,交换位置后下次取值还会是上一次取得值
    if(customSortArrAsce[j] < customSortArrAsce[j + 1]) { // 这一行决定从大到小排列还是从小到大排列
      let temporary = customSortArrAsce[j]; // 临时存放
      customSortArrAsce[j] = customSortArrAsce[j + 1];
      customSortArrAsce[j + 1] = temporary;
    }
  }
}
console.log(customSortArrAsce, ‘js 双重for循环方法从小到大冒泡排序‘)

 

冒泡算法

标签:排列   toms   class   需求   col   ret   打印   pre   scl   

原文地址:https://www.cnblogs.com/mawawa/p/10868673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!