只有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
function data = QSort(data, low, high)
if nargin == 1
low = 1;
high = length(data);
end
if(low<high)
[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
可以分别保存,也可以保存成一个文件,直接使用,效果挺好的