2012年1月23日 星期一

「學會Objective-C的24堂課」Ch8習題解答

答案如果有錯誤或有更好的方法,歡迎留言討論喔!

#import <Foundation/Foundation.h>

//*******************ch8-hw1*******************************
//修改後的bubblesort
void bubble_sort(int data[],int n);
void printData(int data[], int n);

int main (int argc, const char * argv[])
{

    @autoreleasepool {
        
        int data[]={81,58,23,72,43};
        
        //印出資料
        printf("Unsorted data:");
        printData(data, 5);
        
        //氣泡排序
        bubble_sort(data, 5);
        
        //印出排序資料
        printf("排序完成:");
        printData(data, 5);
    }
    return 0;
}

void bubble_sort(int data[],int n)
{
    int i, j , temp, flag;
    
    //n-1pass
    for (i=0; i<n-1; i++) {
        flag=0;//輔助判斷資料是否對調
        //共有n-i-1compare
        for (j=0; j<n-i-1; j++) {
            if (data[j] > data[j+1]) {
                flag=1;
                //資料對調
                temp=data[j];
                data[j]=data[j+1];
                data[j+1]=temp;
                
                printf("After #%i-%i compare: ",i+1,j+1);
                printData(data, 5);
                
            }
        }
        printf("After #%i pass: ",i+1);
        printData(data, 5);

        
        //flag!=1時,表示資料已排序
        if (flag!=1) {
            break;
        }
        
    }
}

void printData(int data[],int n){
    
    //印出資料
    for (int i=0; i<n; i++) {
        printf("%4i",data[i]);
    }
    printf("\n\n");
    
}

沒有留言:

張貼留言