function sortedArray = bubbleSort(array)
n = length(array);
if n <= 1
sortedArray = array;
return;
end
% 分割数组
mid = floor(n / 2);
leftArray = array(1:mid);
rightArray = array(mid+1:end);
% 递归排序
leftSorted = bubbleSort(leftArray);
rightSorted = bubbleSort(rightArray);
% 合并排序后的数组
sortedArray = merge(leftSorted, rightSorted);
end
function mergedArray = merge(leftArray, rightArray)
mergedArray = [];
while ~isempty(leftArray) && ~isempty(rightArray)
if leftArray(1) < rightArray(1)
mergedArray = [mergedArray, leftArray(1)];
leftArray(1) = [];
else
mergedArray = [mergedArray, rightArray(1)];
rightArray(1) = [];
end
end
mergedArray = [mergedArray, leftArray, rightArray];
end
主程序
array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
sortedArray = bubbleSort(array);
disp(sortedArray);