12 六筆資料 9、12、3、25、34、90,以氣泡排序法(bubble sort),由大到小排序,請問總共需要比較多少次?
(A)5
(B)10
(C)15
(D)20

答案:登入後查看
統計: A(58), B(39), C(145), D(9), E(0) #909277

詳解 (共 4 筆)

#1678173
第一次:比5次,取出90,9、12、3、...
(共 157 字,隱藏中)
前往觀看
11
0
#4250033

#include


void bubble_sort(int nums[], int length)

{

int cc=0;

    for(int i=length-1; i>=0; i--){


        int has_sorted = 0;


        for(int j=0; j;>

            if(nums[j] < nums[j+1]){


                // swap elements

cc+=1;

                int temp = nums[j];

                nums[j] = nums[j+1];

                nums[j+1] = temp;


                has_sorted = 1;

            }

        }


        if(has_sorted == 0){

            break;

        }

    }

    printf("\n比對次數:%d\n\n",cc);


}


void print_array(int nums[], int length)

{

    for(int i=0; i;>

        printf("%d ", nums[i]);

    }

    printf("\n");

}


int main()

{

    int nums[6] = {9, 12, 3, 25, 34, 90};

    printf("before sorting:\n");

    print_array(nums, 6);

    

    // call bubble sort function

    bubble_sort(nums, 6);


    printf("after sorting:\n");

    print_array(nums, 6);


    return 0;

}

------------------------------------------------
執行結果(大到小排序):

Success #stdin #stdout 0s 4360KB

 

before sorting: 9 12 3 25 34 90

比對次數:13

after sorting: 90 34 25 12 9 3

--------------------------------------------

習慣算法是從左至右寫起

雖然這題可能也猜得出是15次

因為他從右至左開始排序

9 , 12 , 3 , 25 , 34 , 90

90 , 9 , 12 , 3 , 25 , 34 ----交換5次

90 , 34 , 9 , 12 , 3 , 25 ----交換4次

90 , 34 , 25 , 9 , 12 , 3 ----交換3次

90 , 34 , 25 , 12 , 9 , 3 ----交換1次

------------------------------------------

共交換15次

 

總言之15次跟13次都算是對的,看是怎麼算,選擇題答案沒有13次的選項,故選15次=>C的選項

2
0
#2448980
為甚麼我算13
(共 9 字,隱藏中)
前往觀看
1
2
#2056559
氣泡排序法(bubble sort)是一...
(共 145 字,隱藏中)
前往觀看
1
1