选择排序
选择排序,对输入的n个数字进行升序排列。
输入
第一行一个数n,
第二行n个待排序的数字ai。
输出
一行升序排列,n个用空格隔开的数字。
输入样例
输出样例
说明/提示
对100%数据,n≤1000,ai≤1000000。
题解
完整代码及注释说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <iostream> using namespace std;
int arr[] = {};
void swap_(int &a, int &b){ int temp = a; a = b; b = temp; }
void selectSort(int arr[], int n){ for (int i = 0; i < n - 1; i++){ int minIndex = i; for (int j = i + 1; j < n; j++){ if (arr[j] < arr[minIndex]){ minIndex = j; } } swap_(arr[i], arr[minIndex]); } } int main(){ int a; cin >> a; for (int i = 0; i < a; i++) { int b; cin >> b; arr[i] = b; } selectSort(arr, a); for (int i = 0; i < a; i++) { cout << arr[i] << " "; } return 0; }
|
冒泡排序
对输入的n个数字进行升序排列。每趟冒一个当前最大数字到后面。依次输出每一趟排序的结果,。
输入
第一行一个数n,
第二行n个待排序的数字ai。
输出
n行,每行n个用空格隔开的数字,表示这一次的结果。
输入样例
输出样例
1 2 3 4
| 3 2 1 4 2 1 3 4 1 2 3 4 1 2 3 4
|
说明/提示
对100%数据,n≤1000,ai≤1000000。
题解
完整代码及注释说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <iostream> using namespace std;
int arr[] = {};
void swap_(int &a, int &b){ int temp = a; a = b; b = temp; }
void bubbleSort(int arr[], int n){ for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap_(arr[j], arr[j + 1]); } } for (int k = 0; k < n; k++) { cout << arr[k] << " "; } cout << endl; } } int main(){ int a; cin >> a; for (int i = 0; i < a; i++) { int b; cin >> b; arr[i] = b; } bubbleSort(arr, a); return 0; }
|
纸牌插排
纸牌牌面从小到大的顺序依次为3~10,J,Q,K,1,2,小王,大王。
输入
20张牌的大小,其中1~10用数字本身表示,JQK
用11,12,13表示,小王和大王用20和30表示。
输出
整理好顺序的20张牌的大小,空格隔开。
输入样例
1
| 2 1 4 4 3 6 10 13 12 11 30 20 7 8 9 4 5 5 5 5
|
输出样例
1
| 3 4 4 4 5 5 5 5 6 7 8 9 10 11 12 13 1 2 20 30
|
完整代码及注释说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <iostream> using namespace std;
int arr[] = {};
void insertSort(int arr[], int n){ for (int i = 1; i < n; i++) { int temp = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > temp) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } } int main(){ int a = 20; for (int i = 0; i < a; i++) { int b; cin >> b; if (b == 1 ) arr[i] = 14; else if (b == 2 ) arr[i] = 15; else arr[i] = b; } insertSort(arr, a); for (int l = 0; l < a; l++) { if (arr[l]==14) cout << 1 << " "; else if(arr[l]==15) cout << 2 << " "; else cout << arr[l] << " "; } cout << endl; return 0; }
|
