总结一些常用的排序算法。
先定义一个数组用来进行接下来的排序
int num[] = { 4,9,7,15,67,89,97,123,468,12,34,76,8,9,4,1,80,100 };
//获取数组长度
int length;
length = sizeof(num) / sizeof(int);
以下皆为从小到大的排序
冒泡排序
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1-i; j++) {
if (num[j] > num[j + 1]) {
int t = num[j];
num[j] = num[j + 1];
num[j + 1] = t;
}
}
}
选择排序
for (int i = 0; i < length; i++) {
int min = num[i];
for (int j = i; j < length; j++) {
if (min > num[j]) {
int t = min;
min = num[j];
num[j] = t;
}
}
num[i] = min;
}
快速排序
//先定义一个交换函数
void exchange(int* p, int* q) {
int temp = *p;
*p = *q;
*q = temp;
}
int quaipai(int left, int right) {
//双指针相遇,排序结束
if (left >= right) {
return 0;
}
int i,j, t;//左右指针及基准
i = left;
j = right;
t = num[left];
//移动函数
while (i != j) {
while (i < j && num[j] >= t) {
j--;
}
exchange(&num[i], &num[j]);
while (i < j && num[i] <= t) {
i++;
}
exchange(&num[i], &num[j]);
}
//递归此过程
quaipai(i + 1, right);
quaipai(left, i - 1);
}