【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>
相关文章
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
122 62
|
1月前
|
JavaScript 前端开发
如何使用时间切片来优化JavaScript动画的性能?
如何使用时间切片来优化JavaScript动画的性能?
|
28天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
70 31
|
1月前
|
缓存 前端开发 JavaScript
JavaScript加载优化
JavaScript加载优化
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
1月前
|
缓存 JavaScript 前端开发
介绍一下 JavaScript 中数组方法的常见优化技巧
通过合理运用这些优化技巧,可以提高 JavaScript 中数组方法的执行效率,提升代码的整体性能。在实际开发中,需要根据具体的业务场景和数据特点选择合适的优化方法。
34 6
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
1月前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
2月前
|
存储 JavaScript 前端开发
JavaScript垃圾回收机制与优化
【10月更文挑战第21】JavaScript垃圾回收机制与优化
42 5
|
3月前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
199 15