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 }
浙公网安备 33010602011771号