m0_64285157 2021-12-31 16:33 采纳率: 100%
浏览 64
已结题

MATLAB双向冒泡排序怎么实现

MATLAB双向冒泡排序怎么实现(求详细步骤)

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2022-01-01 07:07
    关注

    你好同学,matlab两头冒泡排序算法可以这么做(基本上都注释了):

    clc;clear
    array = [1,3,2,3,8,4]; % 待排序的数组
    left = 1; % 左边为1
    right = numel(array); % 右边为数组的长度
    shift = 1; % 初始shift
    while (left < right)
        for i = left : right-1 % 左到右排列
            if (array(i) > array(i+1)) % 如果左边大于右边
                array([i,i+1])= array([i+1,i]); % 交换顺序
                shift = i;
            end
        end
        right = shift; % 更新右端位置
        for i = right-1:-1:left % 右到左排列
            if (array(i) > array(i+1)) % 如果左边大于右边
                array([i,i+1])= array([i+1,i]); % 交换顺序
                shift = i + 1;
            end
        end
        left = shift; % 更新左端位置
    end
    disp('最终排列好的数组为')
    disp(array)
    
    

    这个例子输出的结果为:

    最终排列好的数组为
         1     2     3     3     4     8
    
    

    可见排序正确输出了结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 1月1日
  • 创建了问题 12月31日