只有C中的qsort存在,调用比较麻烦,其实在数据结构中,快速排序法是经典排序之一,上网搜了一下简介,把对应的VC程序改了一下,做成了下面的matlab代码:
%快速排序法
%基本的思想:通过一趟排序将待排的记录分割成独立的两部分,
%其中前一部分的 记录的关键字均比另一部分记录的关键字小,
%再分别对两组记录进行递归分割,达到排序的目的
%平均时间复杂度为O(log2(n))
function qsort_main()
A = rand(100, 1) * 30;
data = A; low = 1; high = 100;
data = QSort(data, low, high)
A
functiondata = QSort(data, low, high)
if nargin == 1
low = 1;
high = length(data);
end
if(low
[data pivokey] = qPartition(data, low, high);
data = QSort( data, low, pivokey - 1 );
data = QSort( data, pivokey + 1, high );
end
% 将数组分成两部分,前一部分的值均比后一部分值小
% 返回分界点
function [data low] = qPartition(data, low, high)
if nargin == 1
low = 1;
hight = length(data);
end
pivokey=data(low);
while low < high
while low < high & data(high) >= pivokey
high = high - 1;
end
c = data(low); d = data(high);
data(low) = d; data(high) = c;
while low < high & data(low) <= pivokey
low = low + 1;
end
c = data(low); d = data(high);
data(low) = d; data(high) = c;
end
可以分别保存,也可以保存成一个文件,直接使用,效果挺好的
0
如果觉得《MATLAB输入排序代码 matlab快速排序算法实现》对你有帮助,请点赞、收藏,并留下你的观点哦!