#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;
}