虽然使用 STL 函数来进行排序会更方便,但还是想记录一下。
冒泡排序
#include <bits/stdc++.h>
void bubbleSort(int *a, int b) {
for (int i = b - 1; i > 0; i--)
for (int j = 0; j < i; j++)
if (a[j] > a[j + 1]) {
int k = a[j];
a[j] = a[j + 1];
a[j + 1] = k;
}
}
int main() {
const int MAX = 105;
int a[MAX];
memset(a, 0, sizeof(a));
int b;
scanf("%d", &b);
for (int i = 0; i < b; i++)
scanf("%d", &a[i]);
bubbleSort(a, b);
for (int i = 0; i < b; i++)
printf("%d\n", a[i]);
return 0;
}
快速排序
#include <bits/stdc++.h>
void quickSort(int *a, int b, int c) {
if (b < c) {
int pos;
int i = b;
int j = c;
int k = a[b];
while (i < j) {
while (i < j && a[j] > k) j--;
if (i < j) {
a[i] = a[j];
i++;
}
while (i < j && a[i] < k) i++;
if (i < j) {
a[j] = a[i];
j--;
}
}
a[i] = k;
quickSort(a, b, i - 1);
quickSort(a, i + 1, c);
}
}
int main() {
const int MAX = 105;
int a[MAX];
memset(a, 0, sizeof(a));
int b;
scanf("%d", &b);
for (int i = 0; i < b; i++)
scanf("%d", &a[i]);
quickSort(a, 0, b - 1);
for (int i = 0; i < b; i++)
printf("%d\n", a[i]);
return 0;
}
选择排序
#include <bits/stdc++.h>
void selectionSort(int *a, int b) {
for (int i = 0; i < b; i++) {
int id = i;
for (int j = i + 1; j < b; j++)
if (a[j] < a[id]) id = j;
if (id != i) {
int k = a[id];
a[id] = a[i];
a[i] = k;
}
}
}
int main() {
const int MAX = 105;
int a[MAX];
memset(a, 0, sizeof(a));
int b;
scanf("%d", &b);
for (int i = 0; i < b; i++)
scanf("%d", &a[i]);
selectionSort(a, b);
for (int i = 0; i < b; i++)
printf("%d\n", a[i]);
return 0;
}
纯手写,因本人水平有限,若有错误还望读者在评论区里指点一二。