09 排序1 排序 25分

2022-08-27 21:42:14 字數 1717 閱讀 4955

給定n個(長整型範圍內的)整數,要求輸出從小到大排序後的結果。

本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下:

輸入第一行給出正整數n(≤10^5),隨後一行給出n個(長整型範圍內的)整數,其間以空格分隔。

在一行中輸出從小到大排序後的結果,數字間以1個空格分隔,行末不得有多餘空格。

11

4 981 10 -17 0 -20 29 50 8 43 -5

-20 -17 -5 0 4 8 10 29 43 50 981
最好情況下時間複雜度為o(n),陣列是順序的時候;最壞情況下時間複雜度為o(n^2),陣列是逆序的時候。具有穩定性。

void bubble_sort(int a, int n) 

}if (!flag) break;

}}

最好情況下時間複雜度為o(n),陣列是順序的時候;最壞情況下時間複雜度為o(n^2),陣列是逆序的時候。具有穩定性。

void insert_sort(int a, int n) 

}

插入排序的公升級版,時間複雜度在o(n)與o(n^2)之間。不具有穩定性。

void shell_sort(int a, int n) 

stride /= 3;

}}

時間複雜度為o(n^2),即使是順序也是如此。不具有穩定性。很垃圾。

void select_sort(int a, int n) 

if (min_pos != i)

}}

選擇排序的公升級版,時間複雜度為o(nlogn)。不具有穩定性。

void perc_down(int a, int n, int p) 

a[parent] = temp;

}void heap_sort(int a, int n)

}

時間複雜度o(nlogn),空間複雜度o(n),具有穩定性。

void m_sort(int a, int tempa, int low, int high) 

}void merge(int a, int tempa, int low, int mid, int high)

while (i <= mid)

tempa[k++] = a[i++];

while (j <= high)

tempa[k++] = a[j++];

for (int m = low; m <= high; m++)

a[m] = tempa[m];

}void merge_sort(int a, int n) else

}

最好時間情況下時間複雜度為o(nlogn),陣列的順序很亂的時候;最壞情況下時間複雜度為o(n^2),陣列是順序或逆序的時候。空間複雜度為o(logn)。不具有穩定性。

void q_sort(int a, int n, int low, int high) 

a[i] = temp;

q_sort(a, n, low, i);

q_sort(a, n, i + 1, high);

}void quick_sort(int a, int n)

09 排序1 排序 25分

排序 include include include define maxn 100005 void swap int a,int b void bubble sort int a,int n if flag break void insertion sort int a,int n void sh...

09 排序1 排序 25分

給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 資料1 只有1個元素 資料2 11個不相同的整數,測試基本正確性 資料3 103個隨機整數 資料4 104個隨機整數 資料5 105個隨機整數 資料6 105個...

09 排序1 排序 25

時間限制 5000 ms 記憶體限制 128000 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 輸入格式 輸入第一行給出正...