matlab实现快速排序
·
在MATLAB中,实现快速排序算法可以通过递归的方式完成。以下是快速排序算法的一个简单实现:
function quickSort(A, low, high) | |
if low < high | |
% pi 是分区索引,A(pi) 现在位于其排序后的正确位置 | |
pi = partition(A, low, high); | |
% 分别对分区左侧和右侧的子数组进行快速排序 | |
quickSort(A, low, pi-1); | |
quickSort(A, pi+1, high); | |
end | |
end | |
function pi = partition(A, low, high) | |
% 选择最右侧的元素作为主元 | |
pivot = A(high); | |
% i 是小于主元的元素的索引 | |
i = (low - 1); | |
for j = low:high-1 | |
% 如果当前元素小于或等于主元 | |
if A(j) <= pivot | |
% 增加索引i | |
i = i + 1; | |
% 交换A(i)和A(j) | |
temp = A(i); | |
A(i) = A(j); | |
A(j) = temp; | |
end | |
end | |
% 将主元交换到其最终位置 | |
temp = A(i+1); | |
A(i+1) = A(high); | |
A(high) = temp; | |
% 返回主元的索引 | |
pi = i + 1; | |
end | |
% 示例用法 | |
A = [3,6,8,10,1,2,1]; | |
n = length(A); | |
quickSort(A, 1, n); | |
disp(A); |
在这个实现中,quickSort函数是递归的,它接受一个数组A以及要排序的子数组的低索引low和高索引high。partition函数用于将数组分为两部分,使得左侧的所有元素都小于或等于主元,而右侧的所有元素都大于主元。然后,quickSort函数递归地对这两个子数组进行排序。
注意:在MATLAB中,通常不需要手动编写排序算法,因为MATLAB已经内置了许多高效的排序函数,如sort。但是,了解如何实现这些算法对于理解它们的工作原理和提高编程技能是很有帮助的。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)