【JavaScript】38_冒泡排序及优化 与 选择排序

简介: # 11、排序思路一: ## 冒泡排序9, 1, 3, 2, 8, 0, 5, 7, 6, 4- 比较相邻的两个元素,然后根据大小来决定是否交换它们的位置- 例子: 第一次排序:1, 3, 2, 8, 0, 5, 7, 6, 4, 9 第二次排序:1, 2, 3, 0, 5, 7, 6, 4, 8, 9 第三次排序:1, 2, 0, 3, 5, 6, 4, 7, 8, 9 ... 倒数第二次 0, 1, 2, 3, 4, 5, 6, 7, 8, 9- 这种排序方式,被称为冒泡排序,冒泡排序是最慢的排序方式, 数字少还可以凑合用,不适用于数据量较大的

11、排序

思路一:

冒泡排序

9, 1, 3, 2, 8, 0, 5, 7, 6, 4

  • 比较相邻的两个元素,然后根据大小来决定是否交换它们的位置
  • 例子:
    第一次排序:1, 3, 2, 8, 0, 5, 7, 6, 4, 9
    第二次排序:1, 2, 3, 0, 5, 7, 6, 4, 8, 9
    第三次排序:1, 2, 0, 3, 5, 6, 4, 7, 8, 9
    ...
    倒数第二次 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 这种排序方式,被称为冒泡排序,冒泡排序是最慢的排序方式,
    数字少还可以凑合用,不适用于数据量较大的排序
<script>
    const arr = [9, 1, 3, 2, 8, 0, 5, 7, 6, 4]
    for (let j = 0; j < arr.length - 1; j++) {
        for (let i = 0; i < arr.length - 1; i++) {
            // arr[i] 前边的元素 arr[i+1] 后边元素
            if (arr[i] < arr[i + 1]) {
                // 大数在前,小数在后,需要交换两个元素的位置
                let temp = arr[i] // 临时变量用来存储arr[i]的值
                arr[i] = arr[i + 1] // 将arr[i+1]的值赋给arr[i]
                arr[i + 1] = temp // 修改arr[i+1]的值
            }
        }
    }

    console.log(arr)
</script>

冒泡优化

    <script>
        /* 
            1, 3, 2, 8, 0, 5, 7, 6, 4, 9
            1, 2, 3, 0, 5, 7, 6, 4, 8, 9
            1, 2, 0, 3, 5, 6, 4, 7, 8, 9
            1, 0, 2, 3, 5, 4, 6, 7, 8, 9
        */
        const arr = [9,1,3,2,8,9,0,5,7,6,4]
        //使用优化后的冒泡排序-----内层循环条件变为length-1-j;呈斜线减少查询次数
         for(let j = 0; j < arr.length -1; j++){
             for (let i = 0; i < arr.length - 1 - j; i++) {
                 if (arr[i] > arr[i + 1]) {
                     let temp = arr[i] 
                     arr[i] = arr[i + 1]
                     arr[i + 1] = temp
                 }
             }
            console.log(arr)
         }
    </script>

思路2:
9, 1, 3, 2, 8, 0, 5, 7, 6, 4

  • 取出一个元素,然后将其他元素和该元素进行比较,如果其他元素比该元素小则交换两个元素的位置
  • 例子:
    0, 9, 3, 2, 8, 1, 5, 7, 6, 4
    0, 1, 9, 3, 8, 2, 5, 7, 6, 4
    0, 1, 2, 9, 8, 3, 5, 7, 6, 4
    ...

选择排序

    <script>
        //选择排序
        for(let i=0; i<arr.length; i++){
            for(let j=i+1; j<arr.length; j++){
                if(arr[i] > arr[j]){
                    // 交换两个元素的位置
                    let temp = arr[i]
                    arr[i] = arr[j]
                    arr[j] = temp
                }
            }

        }
        console.log(arr)
    </script>
相关文章
|
4月前
|
缓存 编解码 JavaScript
在JavaScript小游戏开发中,如何优化游戏性能,比如减少重绘、提高动画流畅度?
提升JavaScript游戏性能的关键点包括:使用requestAnimationFrame优化动画流畅度;减少DOM操作,利用DocumentFragment或虚拟DOM;使用Canvas/WebGL高效渲染;优化图像资源,压缩图片和使用雪碧图;分层渲染与视口裁剪减少无效绘制;借助Web Workers进行后台计算;缓存计算结果;合理添加事件监听器并采用事件委托;定期进行性能分析以找到并解决瓶颈。不断测试与调整是优化的关键。
89 4
|
4月前
|
前端开发 JavaScript 安全
从前端性能优化角度谈JavaScript代码压缩与混淆
本文从前端性能优化的角度出发,探讨了JavaScript代码压缩与混淆的重要性及实现方式,通过分析不同压缩混淆工具的特点和效果,为开发者提供了实用的指导和建议。
|
1天前
|
存储 缓存 JavaScript
JavaScript 中数组方法的常见优化技巧
JavaScript 中数组方法的常见优化技巧
|
15天前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
50 5
|
1月前
|
JSON JavaScript 前端开发
震惊!JS如何悄无声息追踪你的每一步?揭秘页面访问与关闭的超级上报大法,让数据说话,优化体验不再难!
【8月更文挑战第4天】在Web开发中,跟踪用户行为对提升体验与留存至关重要。本文以在线学习平台为例,介绍如何用JavaScript监听页面访问及关闭,并上报数据。通过`window.onload`监测页面加载,记录用户访问;利用`navigator.sendBeacon`在用户离开时发送少量数据至服务器,无需担心请求失败。需注意隐私合规、性能影响及浏览器兼容性。此技术有助于深入理解用户行为,为产品迭代提供依据。
65 8
|
28天前
|
C# 开发者 测试技术
震惊!Xamarin 竟能如此构建跨平台应用程序,代码共享、界面设计与性能优化全攻略大揭秘!
【8月更文挑战第31天】在移动应用开发领域,跨平台工具日益受到青睐。Xamarin 是一款强大的工具,支持使用 C# 开发适用于 iOS、Android 和 Windows 的应用。通过安装 Visual Studio 或 Visual Studio for Mac,并创建 Xamarin 项目,开发者可以利用丰富的功能和工具进行开发。Xamarin 的主要优势在于代码共享,能够显著提高开发效率。
45 0
|
28天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
51 0
|
29天前
|
JavaScript 前端开发 应用服务中间件
Vue.js项目部署与优化:一场从本地到生产环境的华丽蜕变,见证你的应用如何凤凰涅槃,惊艳上线!
【8月更文挑战第30天】作为一名前端开发者,掌握从本地开发环境到生产环境的迁移至关重要。本文将带你了解如何使用 Vue.js 构建和打包应用,确保其在生产环境中流畅运行。首先,通过 `npm run build` 或 `yarn build` 命令生成生产环境文件;接着,配置服务器(如 Nginx)以支持静态文件服务;最后,通过代码分割、资源压缩、CDN 使用、服务端渲染及缓存策略等手段优化应用性能。跟随本文,你将学会如何让 Vue.js 应用在真实环境中表现优异,为用户提供流畅体验。
36 0
|
1月前
|
缓存 负载均衡 JavaScript
Node.js 服务器性能优化
【8月更文挑战第4天】 Node.js 服务器性能优化
38 1
|
2月前
|
缓存 监控 JavaScript
常见的JS优化方案都有那些
【7月更文挑战第7天】 JavaScript优化包括代码优化(箭头函数、解构赋值、模板字面量、展开运算符、高阶函数)、DOM操作优化(减少操作、事件委托、节流防抖)、异步优化(Promise、Web Workers)、缓存策略(结果缓存、HTTP缓存)、压缩合并以及性能分析和监控。通过这些方法,提升网页性能和用户体验。
24 1