冒泡排序无法将数组排成有序序列

#include
#include
void BuddleSort(int a[], int n);
int main() {
int a[10] = { 7,4,3,2,8,1,0 };
int length = sizeof(a) / sizeof(int);
BuddleSort(a,length);
for (int i = 0; i < length; i++) {
printf("%d", a[i]);
}
}
void BuddleSort(int a[], int n) {
bool exchange;
for (int i = 0; i < n; i++) {
exchange = false;
for (int j = n-1; j > i; j--) {
if (a[j] < a[j - 1]) {
int temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
exchange = true;
}
}
exchange ==false;
return;
}
}
无法正确排序

exchange ==false;
这时要干嘛,判断没有if,赋值应该用 = ,写在这里也不能传入主程序。

return也是多余

正确写法

void BuddleSort(int a[], int n);
int main() {
    int a[] = { 7,4,3,2,8,1,0 };
    int length = sizeof(a) / sizeof(int);
    BuddleSort(a,length);
    for (int i = 0; i < length; i++) {
        printf("%d ", a[i]);
    }
}
void BuddleSort(int a[], int n) {
    for (int i = 0; i < n; i++) {
        for (int j = n-1; j > i; j--) {
            if (a[j] < a[j - 1]) {
                int temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
            }
        }
    }
}

主要原因是int length = sizeof(a) / sizeof(int);这里你的length不是你数组中元素的个数啊,是整个数组的长度,然后你下面的j也是按照了length来计算的当然不对了,输入进去的应该是7,不是10,你要么把a[10]改掉,要么直接算出里面元素个数放进去

代码大体是对的,但是exchange没用对。

要不把exchange相关的全部删掉,要不就在上面加个if(exchange ==false)再returned

int temp = 0; 
    for (int i = 0; i < list.length - 1; i++) {
        for (int j = list.length - 1; j > i; j--) {
            if (list[j - 1] > list[j]) {
                temp = list[j - 1];
                list[j - 1] = list[j];
                list[j] = temp;
            }
        }
    }

首先,数组长度有问题,程度等于10,并不是7;
最后,BuddleSort函数中return位置放错了,应该放在倒数第1个}前,或者直接注释掉,void无返回类型。

(补充一下,main函数中返回值return 0;int temp可在函数初始的时候添加定义,后续就无需每次都定义了)

#include<stdio.h>
#include<stdlib.h>
void BuddleSort(int a[], int n);
int main() {
    int a[10] = { 7,4,3,2,8,1,0 };
    int length = sizeof(a) / sizeof(int);
    printf("数组长度 = %d\n",length);
    length =7 ;
    BuddleSort(a,length);
    for (int i = 0; i < length; i++) {
        printf("%d", a[i]);
    }
    return 0;
}
void BuddleSort(int a[], int n) {
    //bool exchange;
    int temp = 0;
    for (int i = 0; i < n; i++) {
        //exchange = false;
        for (int j = n-1; j > i; j--) {
            if (a[j] < a[j - 1]) {
                temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
            //  exchange = true;
            }

        }       
    //exchange ==false;

    }
    return;
}