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

冒泡和快速排序的区别

冒泡算法

快速排序

时间复杂度

O(n^2)最坏/平均

O(nlog n )平均,O(n^2)最坏

空间复杂度

O(1)

O(log n)最好/O(n)最坏

稳定性

很稳定(元素顺序不变)

不稳定(元素顺序可能改变)

适用场景

小规模数据或接近有序的数据

大规模数据

核心思想

重复遍历,每轮都会把最大的元素移至末尾

选择基准值,比基准值小的元素放左边,大的放右边

代码实现对比 

1. 冒泡排序

public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换相邻元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}

 2. 快速排序

public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);  // 分区quickSort(arr, low, pivotIndex - 1);         // 递归排序左半部分quickSort(arr, pivotIndex + 1, high);        // 递归排序右半部分}
}private static int partition(int[] arr, int low, int high) {int pivot = arr[high];  // 选择最后一个元素作为基准值int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;// 交换元素int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}// 将基准值放到正确位置int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return i + 1;
}

http://www.lryc.cn/news/580419.html

相关文章:

  • 【Note】《深入理解Linux内核》 第十八章:深入理解 ext2 与 ext3 文件系统
  • 人工智能-基础篇-18-什么是RAG(检索增强生成:知识库+向量化技术+大语言模型LLM整合的技术框架)
  • 2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--中篇
  • 【算法笔记】4.LeetCode-Hot100-数组专项
  • 多任务学习-ESMM
  • 隐马尔可夫模型(HMM):观测背后的状态解码艺术
  • STM32HAL库总结
  • HuggingFists: 无代码处理复杂PDF
  • Debian、Buildroot 和 Ubuntu 都是基于 Linux 的系统区别
  • 在VMware虚拟机中安装Windows 98时,Explorer提示“该程序执行了非法操作,即将关闭”的解决办法
  • 若 VSCode 添加到文件夹内右键菜单中显示(通过reg文件方式)
  • linux系统源代码安装apache、编译隐藏版本号
  • ubuntu手动编译VTK9.3 Generating qmltypes file 失败
  • Cursor/VScode ,点击运行按钮,就打开新的终端,如何设置为在当前终端运行文件而不是重新打开终端----一招搞定篇
  • 高频交易服务器篇
  • Redis服务器
  • 【Elasticsearch】检索高亮
  • 【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南
  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • Vue.js TDD开发深度指南:工具链配置与精细化测试策略
  • Linux(centos)安装 MySQL 8
  • ADAS功能介绍
  • alpine安装及配置nodejs开发测试环境
  • 流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
  • Swift 数学计算:用 Accelerate 框架让性能“加速吃鸡”
  • Vue前端项目接收webSocket信息
  • ASP.NET 安装使用教程
  • CppCon 2018 学习:THE BITS BETWEEN THE BITS HOW WE GET TO HOW WE GET TO main()
  • 3dmax标准材质转物理材质插件,支持VR材质和CR材质转换成功物理材质,支持多维子材质
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?