最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 冒泡排序的实现思路和优化方案

    正文概述 掘金(请不要耽误我修仙)   2021-04-02   475

    文章目录

          • 写在前面
          • 基础写法
            • 图解(白嫖的图)
            • 基础写法代码实现
          • 优化外层循环的写法
            • 外层循环优化代码实现
          • 优化内层循环
            • 内层循环优化代码实现

    写在前面

    基础写法

    图解(白嫖的图)

    源图片地址冒泡排序的实现思路和优化方案

    基础写法代码实现
     function _funMp(_dataArr) {
      	console.time()
      	if (_dataArr instanceof Array) {
      		for (let i = 1; i < arr.length; i++) {
      			for (let j = 0; j < arr.length; j++) {
      				if (arr[j] > arr[j + 1]) {
      					let temp = arr[j]
      					arr[j] = arr[j + 1] 
      					arr[j + 1] = temp
      				}
      			}
      		}
      	} else {
      		console.info("_dataArr is not Array")
      	}
      	console.timeEnd()
      	return _dataArr
      }
    

    至于运行的结果你们自己去看吧!这里就不贴了

    优化外层循环的写法

    外层循环优化代码实现
    function _funMp(_dataArr) {
      	console.time()
      	let _ischange = true
      	if (_dataArr instanceof Array) {
      		for (let i = 1; i < arr.length; i++) {
      			if (!_ischange) {
      				break
      			}
      			_ischange = false
      			for (let j = 0; j < arr.length; j++) {
      				if (arr[j] > arr[j + 1]) {
      					_ischange = true
      					let temp = arr[j]
      					arr[j] = arr[j + 1] 
      					arr[j + 1] = temp
      				}
      			}
      		}
      	} else {
      		console.info("_dataArr is not Array")
      	}
      	console.timeEnd()
      	return _dataArr
      }
    

    优化内层循环

    内层循环优化代码实现
    /**
     * @function _funMp 冒泡排序
     * @param {Array} _dataArr user提供的实参
     * @ischange 标记是否发生交互,如果不交互,不进行比较,优化性能
     * @_currLocal 记录临界值   将没有必要排序的后续操作停止比较,比较当前值前面的所有值
     */
    function _funMp(_dataArr) {
    		console.time()
    		let _currLocal = _dataArr.length 
    		let _ischange = true
    		if (_dataArr instanceof Array) {
    			for (let i = 1; i < arr.length; i++) {
    				if (!_ischange) {
    					break
    				}
    				_ischange = false
    				let _currIndex = 0
    				for (let j = 0; j < _currLocal; j++) {
    					if (arr[j] > arr[j + 1]) {
    						_ischange = true
    						_currIndex = j  
    						let temp = arr[j]
    						arr[j] = arr[j + 1] 
    						arr[j + 1] = temp
    					}
    				}
    				_currLocal = _currIndex
    			}
    		} else {
    			console.info("_dataArr is not Array")
    		}
    		console.timeEnd()
    		return _dataArr
    	}
    

    起源地下载网 » 冒泡排序的实现思路和优化方案

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元