选择排序
| void xuanze_sort(int a[], int n) { |
| for (int i = n; i >= 2; i--) { |
| int mx = 1; |
| for (int j = 1; j <= i; j++) { |
| if (a[j] > a[mx]) mx = j; |
| } |
| swap(a[mx], a[i]); |
| } |
| } |
冒泡排序
| void maopao_sort(int a[], int n) { |
| for (int i = n; i >= 2; i--) { |
| for (int j = 1; j < n; j++) { |
| if (a[j] > a[j + 1]) swap(a[j], a[j + 1]); |
| } |
| } |
| } |
插入排序
| void charRu_sort(int a[], int n) { |
| for (int i = 2; i <= n; i++) { |
| for (int j = i; j >= 2; j--) { |
| if (a[j] < a[j - 1]) swap(a[j], a[j - 1]); |
| } |
| } |
| } |
桶排序
| void tong_sort(int a[], int n) { |
| memset(tong, 0, sizeof tong); |
| int mx = 0; |
| for (int i = 1; i <= n; i++) tong[a[i]]++, mx = max(mx, a[i]); |
| int cnt = 0; |
| for (int i = 1; i <= mx; i++) { |
| if (tong[i]) { |
| while (tong[i]--) a[++cnt] = i; |
| } |
| } |
| } |
快速排序
| void quick_sort(int a[], int l, int r) { |
| if (l >= r) return; |
| int i, j; |
| i = l - 1, j = r + 1; |
| int mid = l + r >> 1; |
| while (i < j) { |
| do i++; |
| while (a[i] < a[mid]); |
| do j--; |
| while (a[j] > a[mid]); |
| if (i < j) |
| swap(a[i], a[j]); |
| } |
| quick_sort(a, l, j), quick_sort(a, j + 1, r); |
| } |
归并排序
| void merge_sort(int q[], int l, int r) { |
| if (l >= r) return; |
| |
| int mid = l + r >> 1; |
| merge_sort(q, l, mid); |
| merge_sort(q, mid + 1, r); |
| |
| int k = 0, i = l, j = mid + 1; |
| while (i <= mid && j <= r) |
| if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ]; |
| else tmp[k ++ ] = q[j ++ ]; |
| |
| while (i <= mid) tmp[k ++ ] = q[i ++ ]; |
| while (j <= r) tmp[k ++ ] = q[j ++ ]; |
| |
| for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j]; |
| } |
sort
完整程序
| #include<iostream> |
| #include<algorithm> |
| #include<cstring> |
| |
| using namespace std; |
| |
| const int N = 1e5 + 10; |
| |
| int f[N], q[N], tmp[N], tong[N]; |
| void xuanze_sort(int a[], int n) { |
| for (int i = n; i >= 2; i--) { |
| int mx = 1; |
| for (int j = 1; j <= i; j++) { |
| if (a[j] > a[mx]) mx = j; |
| } |
| swap(a[mx], a[i]); |
| } |
| } |
| |
| void maopao_sort(int a[], int n) { |
| for (int i = n; i >= 2; i--) { |
| for (int j = 1; j < n; j++) { |
| if (a[j] > a[j + 1]) swap(a[j], a[j + 1]); |
| } |
| } |
| } |
| |
| void charRu_sort(int a[], int n) { |
| for (int i = 2; i <= n; i++) { |
| for (int j = i; j >= 2; j--) { |
| if (a[j] < a[j - 1]) swap(a[j], a[j - 1]); |
| } |
| } |
| } |
| void tong_sort(int a[], int n) { |
| memset(tong, 0, sizeof tong); |
| int mx = 0; |
| for (int i = 1; i <= n; i++) tong[a[i]]++, mx = max(mx, a[i]); |
| int cnt = 0; |
| for (int i = 1; i <= mx; i++) { |
| if (tong[i]) { |
| while (tong[i]--) a[++cnt] = i; |
| } |
| } |
| } |
| void quick_sort(int a[], int l, int r) { |
| if (l >= r) return; |
| int i, j; |
| i = l - 1, j = r + 1; |
| int mid = l + r >> 1; |
| while (i < j) { |
| do i++; |
| while (a[i] < a[mid]); |
| do j--; |
| while (a[j] > a[mid]); |
| if (i < j) |
| swap(a[i], a[j]); |
| } |
| quick_sort(a, l, j), quick_sort(a, j + 1, r); |
| } |
| |
| void merge_sort(int q[], int l, int r) { |
| if (l >= r) return; |
| |
| int mid = l + r >> 1; |
| merge_sort(q, l, mid); |
| merge_sort(q, mid + 1, r); |
| |
| int k = 0, i = l, j = mid + 1; |
| while (i <= mid && j <= r) |
| if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ]; |
| else tmp[k ++ ] = q[j ++ ]; |
| |
| while (i <= mid) tmp[k ++ ] = q[i ++ ]; |
| while (j <= r) tmp[k ++ ] = q[j ++ ]; |
| |
| for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j]; |
| } |
| |
| int main() { |
| int n; |
| cin >> n; |
| for (int i = 1; i <= n; i++) cin >> q[i]; |
| |
| |
| |
| |
| |
| |
| sort(q + 1, q + n); |
| for (int i = 1; i <= n; i++) cout << q[i] << ' '; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?