c++排序算法模板提供(自用)
1.排序算法
1.1选择排序
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main() {
 5     int a[15] = {0, 7, 2, 9, 6, 3, 5, 4, 8, 10, 1};
 6     int b[15] = {0}, cnt = 0;
 7     int minn = 20, minx;
 8     for (int j = 1; j <= 10; j++) {
 9         minn = 20;
10         for (int i = 1; i <= 10; i++) {
11             if (minn > a[i]) {
12                 minn = a[i];
13                 minx = i;
14             }
15         }
16         a[minx] = 20;
17         b[++cnt] = minn;
18     }
19     for (int i = 1; i <= cnt; i++)
20         cout << b[i] << " ";
21     return 0;
22 }

1.2插入排序

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main() {
 5     int a[15] = {0, 1, 2, 6, 3, 7, 5, 8, 9, 4, 10};
 6     for (int i = 2; i <= 10; i++) {
 7         int j = i - 1, x = a[i];
 8         while (j >= 1 && x < a[j]) {
 9             a[j + 1] = a[j];
10             j--;
11         }
12         a[j + 1] = x;
13     }
14     for (int i = 1; i <= 10; i++) {
15         cout << a[i] << " ";
16     }
17     return 0;
18 }

 1.3归并排序

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[100005]= {0},c[100005];
 4 void f(int left,int mid,int right){
 5     int i = left;int j = mid+1;int k = left;
 6     while(i <= mid && j <= right){
 7         if(a[i] < a[j]){
 8             c[k++] = a[i++];
 9         }
10         else{
11             c[k++] = a[j++];
12         }
13     }
14     while(i <= mid) c[k++] = a[i++];
15     while(j <= right)c[k++] = a[j++];
16     for(int ip = left;ip <= right;ip++){
17         a[ip] = c[ip];
18     }
19     
20 }
21 void sor(int left,int right){
22     if(left == right)return; 
23     int mid = (left + right)/2;
24     sor(left,mid);
25     sor(mid+1,right);
26     f(left,mid,right);
27 }
28 int main(){
29     int n;cin >> n;
30     for(int i = 1;i <= n;i++){
31         cin >> a[i];
32     }
33     sor(1,n);
34     for(int i = 1;i <= n;i++){
35         cout << a[i] << " ";
36     }
37     return 0;
38 }