2015-02-10 144 views
-2

plz告訴我這個錯誤。 它的運行完美,但沒有對陣列執行任何操作。不知道爲什麼......冒泡排序在c

#include<stdio.h> 

void BubbleSort(int a[],int size){ 
    int i,j; 
    for(i=0;i<(size-1);i++){ 
     for(j=0;j<(size-i-1);j++){ 
       if(a[j]>a[j+1]){ 
        int temp=a[j]; 
        a[j]=a[j+1]; 
        a[j]=temp; 
       } 
      } 
    } 
} 
void main(){ 
    int a[]={2,5,8,4,6,7,9,1,3}; 
    int size=9; 
    BubbleSort(a,size); 

    int i; 
    for(i=0;i<size;i++) 
     printf("%d\t",a[i]); 
    printf("\n"); 
} 
+3

7號線應該是一個'[J +1] = temp;'而不是'a [j] = temp;'。 – Luminous 2015-02-10 18:15:39

回答

2

錯誤的數據交換:

int temp=a[j]; 
a[j]=a[j+1]; 
a[j]=temp; //you assign the same data that a[j] held before 

應該是:在你的冒泡功能

int temp=a[j]; 
a[j]=a[j+1]; 
a[j+1]=temp; 
1
  //the swapping of value should be like this: 
      if(a[j]>a[j+1]){ 
       int temp=a[j]; 
       a[j]=a[j+1]; 
       a[j+1]=temp; 
      }