资源简介
用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 含PPT讲解
- matlab FMCW雷达相位法测角修正
- prony谱线估计算法已修正
- MATLABR2008控制系统动态仿真教程_例题
- RSA加密及解密的MATLAB源程序
- matlab实现Romberg算法
- 基于matlab的红细胞提取
- matlab 采用BP实现Mnist数据集代码
- HVDC高压直流输电matlab仿真
- matlab代码,可将三角网格网格转换成
- Anderson CFD 代码 matlab
- 用MATLAB实现相机图像标定
- 如何在matlab中调用C程序
- matlab实现图像透明叠加
- 静电场边值问题编程仿真
- 霍夫变换 检测直线 matlab
- 自己编写的FFT程序matlab
- 锁相环matlab实现
- matlab R2013a 安装图解+BT
- WCDMA matlab仿真实现
- matlab选择三维点坐标
- MVDR算法进行谱估计
- 计算图像对比度
- GP matlab 代码
- MATLAB绘制蜂窝网络程序
- 基于小波阈值去噪
- mk检验matlab程序
- matlab模板实现对图像的平均滤波处理
- PSO工具箱使用简介\\test_func.mmatlab程序
- matlab源程序代码遗传算法工具箱\\ge
评论
共有 条评论