交换排序
void jh_sort(int *a,int len) {
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
if (a[i] > a[j])
swap(a[i], a[j]);
}
}
}
冒泡排序
void mp_sort(int *a,int len) {
for (int i = 0; i < len-1; i++) {
for (int j = 0; j < len-1-i; j++) {
if (a[j] > a[j+1])
swap(a[j], a[j+1]);
}
}
}
选择排序
void select_sort(int *a, int len) {
for (int i = 0; i < len - 1; i++) {
int max = a[i],loc = i;
for (int j = i+1; j < len; j++) {
if (a[j] < max) {
max = a[j];
loc = j;
}
}
swap(a[i], a[loc]);
}
}
插入排序
void insert_sort(int *a, int len) {
for (int i = 1; i < len; i++) {
int temp=a[i];
int j = i - 1;
while ((j >= 0) && (a[j] > temp)) {
/*
这里一定要写成a[j]>temp而不能写成a[j]>a[i],因为a[i]
在第一次循环中相当于a[j+1]
*/
a[j + 1] = a[j];
j--;
}
if(j!=i-1)
a[j + 1] = temp;
}
}
二分排序
注:就是插入排序的一种变体,相当于在找插入位置时,不用挨个去比较,只需要用二分法找到合适的位置插入即可
这里写代码片
快速排序
这里写代码片
堆排序