资源简介
用matlab实现的快速排序以及归并排序
代码片段和文件信息
% ============================================================= %
% ==***************** 归并排序算法(MergeSort)*****************== %
% ============================================================= %
% 基本思想:
% 将两个(或两个以上)有序表合并成一个新的有序表,即把待排序的序列...
% 分为若干个有序的子序列,再把有序的子序列合并为整体有序序列
% 工作原理:
% 1.申请空间,使其大小为两个已经排序序列之和,用于存放合并后的序列;
% 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置;
% 3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并...
% 移动指针到下一位置;
% 4.重复步骤3直到某一指针超出序列列尾。
function y = MergeSort(xvarargin)
% varargin 为Matlab内部变量,cell 型,依次存储函数在其所在位置的所有输入变量
optargin = length(varargin);
if optargin == 0
M = 1; % M = 1 为默认的已排序序列的长度
else
M = varargin{1};
end
N_x = length(x);
N_log2 = ceil(log2(N_x));
N_Insert = 2^N_log2 - N_x;
x = [x ones(1 N_Insert)*Inf];
N = length(x);
y = x;
k = 1;
while(k*M*2 <= N)% 当前比较第k组,每组有两个已排序序列
i = (k - 1)*M*2 + 1; % i 指向当前组的第一个已排序序列的第一个元素
j = i + M; % i 指向当前组的第二个已排序序列的第一个元素
index = (k - 1)*M*2 + 1; % 与当前组相对应的合并空间的下标
while i <= (k - 1)*M*2 + M && j <= k*M*2
if x(i) < x(j)
y(index) = x(i);
i = i + 1;
index = index + 1;
else
y(index) = x(j);
j = j + 1;
index = index + 1;
end
end
if i > (k - 1)*M*2 + M
y(index : k*M*2) = x(j : k*M*2);
else
y(index : k*M*2) = x(i : k*M*2 - M);
end
k = k + 1; % 指向下一组
end
M = M*2;
if M < N
y = MergeSort(yM);
end
y = y(1 : N_x);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1812 2014-03-03 16:19 归并排序\MergeSort.asv
文件 1803 2014-03-03 16:19 归并排序\MergeSort.m
文件 855 2014-03-03 09:40 快速排序\QuickSort.asv
文件 998 2014-03-03 10:10 快速排序\QuickSort.m
目录 0 2014-03-03 15:12 归并排序
目录 0 2014-03-03 15:12 快速排序
----------- --------- ---------- ----- ----
5468 6
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
川公网安备 51152502000135号
评论
共有 条评论