编写合并排序与快速排序程序,对随机生成的实数进行排序matlab
时间: 2023-09-04 17:02:27 浏览: 98
合并排序(Merge Sort)是一种基于分治法的排序算法,其主要思想是将待排序的序列不断划分为更小的子序列,直到每个子序列只有一个元素,然后通过逐层合并有序的子序列,最终得到完全有序的序列。以下是使用Matlab编写的合并排序程序:
```matlab
function sorted = mergeSort(arr)
n = length(arr);
if n <= 1
sorted = arr;
else
mid = fix(n / 2);
left = mergeSort(arr(1:mid));
right = mergeSort(arr(mid+1:n));
sorted = merge(left, right);
end
end
function merged = merge(left, right)
l = length(left);
r = length(right);
i = 1; j = 1;
merged = [];
while i <= l && j <= r
if left(i) <= right(j)
merged = [merged, left(i)];
i = i + 1;
else
merged = [merged, right(j)];
j = j + 1;
end
end
if i <= l
merged = [merged, left(i:end)];
else
merged = [merged, right(j:end)];
end
end
```
快速排序(Quick Sort)是一种基于分治法的排序算法,其主要思想是选择一个基准元素,将序列根据基准元素分为两部分,左边部分小于等于基准元素,右边部分大于等于基准元素,再对左右两部分递归进行快速排序。以下是使用Matlab编写的快速排序程序:
```matlab
function sorted = quickSort(arr)
n = length(arr);
if n <= 1
sorted = arr;
else
pivot = arr(n);
left = [];
right = [];
for i = 1:n-1
if arr(i) <= pivot
left = [left, arr(i)];
else
right = [right, arr(i)];
end
end
sorted = [quickSort(left), pivot, quickSort(right)];
end
end
```
以上两个程序都可以使用`arr`作为输入参数,返回一个有序的数组`sorted`。你可以使用Matlab的随机数生成函数来生成待排序的实数序列,如`rand()`、`randi()`等。
阅读全文