常见排序算法
此处假设需要排序的为一个int型数组,定义如下:
int num[] = {3,0,1,8,7,2,5,4,6,9};
- 冒泡排序
介绍链接
//冒泡排序 通过一次排序 最大的沉底
for (int i = 0; i < 10; i++){//比较的次数
for (int j = 0; j < 10-i-1; j++){
if (num[j] > num[j+1]) {
//交换j和j+1的值
int temp = num[j+1];
num[j+1] = num[j];
num[j] = temp;
}
}
}
- 选择排序
介绍链接
//选择排序 一次取出一个值 默认他是最小的
//如果发现比这个数小 就交换
//遍历整个数组 找到一个最小的
//3,0,1,2,5,4,6
for (int i = 0; i < 10-1; i++){
//默认这是最小的
//int min = num[i];//3
for (int j = i+1; j < 10; j++){
//控制用min和后面的每一个进行比较
if (num[i] > num[j]){
//j对应的数字比min还小 交换
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
//一次遍历之后找到最小的值min
//num[i] = min;
}
- 插入排序
介绍链接
for (int i = 0; i < 10; i++) {
//让i和i+1比较大小
if (num[i] > num[i+1]) {
//交换值
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
//让num[i]和前面的所有进行比较
for (int j = i; j > 0; j--){
if (num[j] < num[j-1]) {
temp = num[j];
num[j] = num[j-1];
num[j-1] = temp;
}
}
}
}
打印及输出:
for (int i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
printf("\n");
image.png
结语
迷茫不可怕,说明你还在向前走。失败不可怕,只要你还能爬起来。