当前位置: 首页 > news >正文

冒泡排序、选择排序

冒泡排序

按照冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变

大的往右丢(往下沉),小的往左排

image-20200730185547751

  • 外层循环控制趟数
  • 内层循环控制每一趟的交换次数
  • 内部交换两个变量的值

image-20200805120922422

内层for循环 第一趟的索引号是0 交换次数是4

内层for循环 第二趟的索引号是1 交换次数是3

内层for循环 第三趟的索引号是2 交换次数是2

内层for循环 第四趟的索引号是3 交换次数是1

  • image-20200730230353196

image-20200730190418228

image-20200805115329377

细节优化:

image-20200805115612895

// 优化1 arr.length-1
for(var i = 0;i<arr.length-1;i++){for(var j = 0;j<arr.length-1;j++){} 
}//优化2  减去多余的比较次数  arr.length-1-i
for(var i = 0;i<arr.length-1;i++){for(var j = 0;j<arr.length-1-i;j++){} 
}

选择排序

image-20200805150458986

// 选择排序// 拿第一个值和后面的值,进行比较var list = [83, 41, 71, 45, 79];// 第一轮结束之后最小的值,放在最前面for (var i = 0; i < list.length - 1; i++) {// 假设一个i为最小值// 内层循环,控制每层做什么操作(拿本次选取的值,与后面的值比较)for (var j = i + 1; j < list.length; j++) {// 如果前面的值,比后面的大,放到最后if (list[i] > list[j]) {// 交换位置var temp = list[i];list[i] = list[j];list[j] = temp;}}}console.log('选择排序如下' + list);

选择排序优化

var list = [83, 41, 71, 45, 79];// 第一轮,找到最小的值,放到下标为0的位置// 第二轮,找到第二小的值,放到下标为1的位置// n个数,找n-1次var min = list[i];// 假设最小值list[i]var minIndex =i; // 假设最小值下标for (var i = 0; i < list.length - 1; i++) {for (var j = i + 1; j < list.length; j++) {if (list[j] < list[minIndex]) {// min = list[j];minIndex = j;}}}var temp = list[i];list[i] = list[minIndex];list[minIndex] = temp;console.log('选择排序如下' + list);
http://www.lryc.cn/news/375663.html

相关文章:

  • 嵌入式实训day6
  • 产品经理是青春饭吗?终于有了答案!
  • FPGA - 数 - 加减乘除
  • 软件性能测试之负载测试、压力测试详情介绍
  • 科研辅助工具
  • 亿达中国武汉园区入选“武汉市科技金融工作站”及“武汉市线下首贷服务站”
  • Docker配置阿里云加速器(2续)
  • 我用chatgpt写了一款程序
  • Python实现逻辑回归与判别分析--西瓜数据集
  • 课时154:项目发布_手工发布_手工发布
  • 鸿蒙开发 一 (四)、ArkTS开发 --UI篇
  • 影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器
  • 【34W字CISSP备考笔记】域1:安全与风险管理
  • Camtasia Studio 2024软件下载附加详细安装教程
  • 人工智能(AI)与机器学习(ML):塑造未来的技术引擎
  • post为什么会发送两次请求详解
  • MySQl基础入门⑯【操作视图】完结
  • Android Root全教程
  • 对yoloV8进行标签过滤来实现行人检测
  • 论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning
  • 目前常用的后端技术
  • windows如何查看硬盘类型(查看磁盘类型)(查看是固态硬盘ssd还是机械硬盘hdd)(Windows优化驱动器——媒体类型)
  • Java学习 (一) 环境安装
  • **args和**kwargs是什么?
  • 【STM32】GPIO简介
  • 移植案例与原理 - utils子系统之KV存储部件 (1)
  • 数据结构---排序算法
  • UE4 RPC进行网络同步
  • HTML(6)——表单
  • Go基础编程 - 08 - 结构体