給定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個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 輸入格式 輸入第一行給出正...