08-8.3.2 快速排序

👋 Hi, I’m @Beast Cheng
👀 I’m interested in photography, hiking, landscape…
🌱 I’m currently learning python, javascript, kotlin…
📫 How to reach me --> 458290771@qq.com


喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

思想

先找到一个枢轴(基准)元素,然后用第一个元素把待排序序列“划分”为两个部分。左边更小,右边更大。

代码实现

int Partition(int A[], int low, int high){
	int pivot = A[low];  // 第一个元素作为枢轴
	while(low < high){  // 用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 - 1);  // 划分左子表
		QuickSort(A, pivotPos + 1, high);  // 划分右子表
	}
}

算法效率分析

每一层的 QuickSort 只需要处理剩余的待排序元素,时间复杂度不超过 O ( n ) O(n) O(n)
时间复杂度 = O ( n ∗ 递归层数 ) 时间复杂度=O(n*递归层数) 时间复杂度=O(n递归层数)

  • 最好: O ( n l o g 2 n ) O(nlog_2n) O(nlog2n)
  • 最坏: O ( n 2 ) O(n^2) O(n2)
  • 平均: O ( n l o g 2 n ) O(nlog_2n) O(nlog2n)

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

  • 最好: O ( l o g 2 n ) O(log_2n) O(log2n)
  • 最坏: O ( n ) O(n) O(n)
  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PackagesNotFoundError是一个错误提示,表示在当前的软件包渠道中找不到指定的软件包。在这个例子中,报错信息显示无法找到pillow==8.3.2这个版本的软件包。 Pillow是一个Python图像处理库,用于处理图像的各种操作,比如打开、保存、裁剪、调整大小等。如果你想安装pillow==8.3.2这个版本,可能有以下几种原因导致找不到该软件包: 1. 软件包版本不可用:可能该版本的软件包在当前的软件包渠道中没有提供。你可以尝试使用其他版本的pillow或者等待该版本在渠道中可用。 2. 渠道配置问题:你的软件包管理工具可能没有正确配置软件包渠道,导致无法找到指定版本的软件包。你可以检查一下软件包管理工具的配置,确保渠道设置正确。 3. 网络连接问题:如果你的网络连接不稳定或者被限制,可能无法从软件包渠道下载软件包。你可以尝试使用稳定的网络连接或者使用代理来解决网络问题。 为了解决这个问题,你可以尝试以下几种方法: 1. 更新软件包列表:使用软件包管理工具更新软件包列表,确保能够获取最新的可用软件包信息。 2. 安装其他版本的软件包:尝试安装其他版本的pillow,比如使用最新版本或者其他稳定版本。 3. 使用其他渠道:尝试使用其他软件包渠道,比如conda-forge或者PyPI,看是否能够找到指定版本的软件包。 4. 手动安装:如果以上方法都无法解决问题,你可以考虑手动下载并安装指定版本的软件包。你可以在Pillow的官方网站或者其他可靠的软件源中找到相应的软件包,并按照其提供的安装说明进行安装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beast Cheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值