下列 C 函式為實作何種排序法?
void sort(long list[], long n)
{
long c, d, t;
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (list[d] > list[d+1])
{
t = list[d];
list[d] = list[d+1];
list[d+1] = t;
}
}
}
}
A合併排序(Merge sort)
B快速排序(Quick sort)
C堆積排序(Heap sort)
D氣泡排序(Bubble sort)正確答案
答案與詳解
D
正確答案
雙層 for 迴圈 + 相鄰兩元素比較交換 = 氣泡排序的經典寫法。
逐選項解析
A合併排序(Merge sort)Merge Sort✕ 錯誤
合併排序採分治法(Divide and Conquer),需遞迴將陣列切半再合併,程式碼會出現 mid = (left+right)/2 與 merge 函式,與本題雙迴圈結構完全不同。