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

数据结构 -- 交换排序(冒泡排序和快速排序)

冒泡排序

基于“交换”的排序:根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置

//交换
void swap(int &a,int &b){int temp = a;a = b;b = temp;
}//冒泡排序
void BubbleSort(int A[],int n){for(int i=0;i<n-1;i++){bool flag = false;			//表示本趟冒泡是否发生交换的标志for(int j = n-1;j>i;j--)if(A[j-1]>A[j]){swap(A[j-1],A[j]);flag = true;}if(flag == false)	return ;		//本趟遍历后没有发生交换,说明表已经有序}
}
算法性能分析

在这里插入图片描述

是否适用于链表?

适用,可从前往后“冒泡”,每⼀趟将更⼤的元素“冒”到链尾

在这里插入图片描述

快速排序

算法思想

在这里插入图片描述

image-20250513113311757
//用第一个元素将待排序元素划分为左右两个部分
int Partition(int A[],int low,int high){int pivot = A[low];while(low<high){while(low<high&&A[high]>=pivot)	--high;A[low] = A[high];while(low<high&&A[low]<=pivot)	++low;A[high] = A[low];}A[low] = pivot;return low;
}//快速排序
void QuickSort(int A[],int low,int high){if(low<high){int pivotpos = Partition(A,low,high);QuickSort(A,low,pivotpos);QuickSort(A,pivotpos,high);}
}
算法效率分析

时间复杂度=O(n*递归层数)

空间复杂度=O(递归层数)

在这里插入图片描述
在这里插入图片描述

时间复杂度空间复杂度
最好O(nlog2n)O(log2n)
最坏O(n2)O(n)

若每⼀次选中的“枢轴”将待排序序列划分为很不均匀的两个部分,则会导致递归深度增加,算法效率变低

若初始序列有序或逆序,则快速排序的性能最差(因为每次选择的都是最靠边的元素)

若每⼀次选中的“枢轴”将待排序序列划分为均匀的两个部分,则递归深度最⼩,算法效率最⾼

快速排序算法优化思路:尽量选择可以把数据中分的枢轴元素。

eg:①选头、中、尾三个位置的元素,取中间值作为枢轴元素;②随机选⼀个元素作为枢轴元素

在这里插入图片描述

注:408原题中说,对所有尚未确定最终位置的所有元素进行⼀遍处理称为“⼀趟”排序,因此⼀次“划分”≠⼀趟排序。

⼀次划分可以确定⼀个元素的最终位置,而⼀趟排序也许可以确定多个元素的最终位置。

相关文章:

  • ES6 哈希数据结构
  • OceanBase 共享存储:云原生数据库的存储
  • 设计模式-行为型模式(详解)
  • 数据结构 -- 插入排序(直接插入排序和希尔排序)
  • 短剧系统开发与抖音生态融合:短视频时代的新风口与商业机遇
  • Vue组件化与生命周期:打造灵活高效的前端积木世界
  • 深入解析MySQL中的HAVING关键字:从入门到实战
  • vue2组件对象传参
  • Web攻防-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • OverLoCK:先概览,再聚焦。CVPR2025全新主干网络
  • 黑马点评--短信登录实现
  • macOS 安装 PostgreSQL
  • 基于BoxMOT的目标检测与跟踪全流程详解
  • HTA8127内置升压的77W单体声D类音频功放
  • 如何在 Windows 11 或 10 上通过 PowerShell 安装 Docker Desktop
  • 大腾智能 PDM 系统:全生命周期管理重塑制造企业数字化转型路径
  • 使用pip安装ptflops报错
  • Spring用到的设计模式
  • Day125 | 灵神 | 二叉树 | 二叉树中的第K大层和
  • 六合哪家做网站建设/google图片搜索引擎入口
  • 东莞做网站seo/微信引流主动被加软件
  • 临沂网站建设培训学校/广州seo顾问
  • win10做的网站其他电脑访问不了怎么办/上海高端网站定制
  • 遵义相亲群/太原seo排名收费
  • 成都网站建设联系电话/郴州seo