for(int k=0;k<N;k++) {
for(int j=k+1;j<N;j++){
if(a[k]>a[j]){
int t = a[k];
a[k] = a[j];
a[j] = t;
}
}
}
當k=N-1時,內部程序循環了0次,說明未走到內部的數值交換處理中,下面代碼【帶實例】中的方法解決了此問題,個人比較喜歡用下面這種。
#include<stdio.h>
int main(){
int data[10]={-100, 79, -3, 0, 49, 21, 8, 200, 12341, 0};
printf("數組原序為:");
for(int i=0;i<10;i++){
printf("%5d",data[i]);
}
printf("\n\n冒泡升序為:");
for(int i=0;i<10-1;i++){
for(int j=0;j<10-1-i;j++){
if(data[j]>data[j+1]){
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
for(int i=0;i<10;i++){
printf("%5d",data[i]);
}
}