Diamonds__ 2022-05-01 17:27 采纳率: 66.7%
浏览 17
已结题

冒泡排序 为什么结果是这样。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void bubble(int arr[],int arrLength) {
    
    
    int i,j,t;
    for(i=0;i<=arrLength-1;i++) {
        for(j=0;j<=arrLength-1-i;j++) {
            if (arr[i]>arr[i+1]) {
                t=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
    }
}
int main() {
    int arr[]= {3,2,1};
    int arrLength=sizeof(arr)/sizeof(int);
    int k;
    bubble(arr,arrLength);
    for(k=0; k<arrLength; k++) {
        printf("%d",arr[k]);
    }
    return 0;
}

img

  • 写回答

1条回答 默认 最新

  • 树下等苹果 2022-05-01 17:46
    关注

    主要是冒泡排序你写错了,修改如下:

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    void bubble(int arr[], int arrLength) {
    
    
        int i, j, t;
        for (i = 0; i < arrLength - 1; i++) {    //小于,而不是小于等于
            for (j = 0; j < arrLength - 1 - i; j++) {   //小于,而不是小于等于
                if (arr[j] > arr[j + 1]) {  //使用j,而不是i
                    t = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = t;
                }
            }
        }
    }
    int main() {
        int arr[] = { 3,2,1 };
        int arrLength = sizeof(arr) / sizeof(int);
        int k;
        bubble(arr, arrLength);
        for (k = 0; k < arrLength; k++) {
            printf("%d", arr[k]);
        }
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月9日
  • 已采纳回答 5月1日
  • 创建了问题 5月1日

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解