weixin_45994861 2020-06-11 09:51 采纳率: 50%
浏览 1138

冒泡排序的比较和交换次数的统计

/*TODO:起泡排序
 功能描述:实现起泡排序功能。
 MAX=1000;
                     将输入参数数组复制到临时变量数组,然后排序。
                     将移动次数累计赋值给Compare1,每次累加1,将交换次数累计赋值给Change1,每次累加3。
 参数说明:A-整形数组参数 待排序数组
 返回值说明:无
*/


void Pop(int A[max])
{
    int i, j, len, flag = 1 ,chage;

    int arry[max + 1];
    for (i = 0; i < max; ++i)
        arry[i] = cache[i];
    len = max;

    for (i = 0; i < max; i++)
    {
        for (j = 0; j < max-i; j++)
        {
            Compare1++;
            if (arry[j]  > arry[j + 1])
            {
                chage = arry[j];
                arry[j] = arry[j + 1];
                arry[j + 1] = chage;
                Change1+=3;
               }
          }
    }

}

我的答案:图片说明

标准答案:
比较次数为:50005000

交换次数为:103098750

不知道为啥交换次数少了 ;

还有一个问题 为了满足5000500我使用了

    for (j = 0; j < max-i; j++)
    但我平时为了防止 j+1 ;越界 都使用
    for(j=0;j<max-i-1 ;j++)

测试发现任然能够排序,不会越界这是为什么?

  • 写回答

1条回答 默认 最新

  • qiu_shaofeng 2020-06-11 12:36
    关注

    int arry[max+1]//数组长度加1了,刚好不越界
    arry[max]是个随机值,会影响交换的次数。

    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度