#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;
}
主要是冒泡排序你写错了,修改如下:
#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;
}