1.选择排序
按照从小到大的顺序输出:66 43 34 12 1。
通过代码实现
#include <stdio.h>
int main()
{
int i;
int j;
int tmp = 0;
int array[] = {34,66,12,43,1};
int len = 0;
len = sizeof(array) / sizeof(array[0]); //计算数组里有多少个数
for(i = 0;i < len-1;i++){ //排序的趟数
for(j = i+1;j < len;j++){ //每趟排序的次数
if(array[j] < array[i]){ //i比j大 让array[0]与array[1]交换
//从大到小输出符号相反
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
}
for(i = 0;i < len; i++){ //遍历数组
printf("%d ",array[i]);
}
return 0;
}
66 43 34 12 1 每行黄色为互相比较的两个数据 | |||||
i=0 j=1 | 43 | 66 | 34 | 12 | 1 |
j=2 | 34 | 66 | 43 | 12 | 1 |
j=3 | 12 | 66 | 43 | 34 | 1 |
j=4 | 1 | 66 | 43 | 34 | 12 |
i=1 j=2 | 1 | 43 | 66 | 34 | 12 |
j=3 | 1 | 34 | 66 | 43 | 12 |
j=4 | 1 | 12 | 66 | 43 | 34 |
i=2 j=3 | 1 | 12 | 43 | 66 | 34 |
j=4 | 1 | 12 | 34 | 66 | 43 |
i=3 j=4 | 1 | 12 | 34 | 43 | 66 |
表格为个人理解,如有错误欢迎指正
2.冒泡排序
按照从大到小输出:34 66 12 43 1。
通过代码实现
#include <stdio.h>
int main()
{
int i;
int j;
int tmp = 0;
int array[] = {34,66,12,43,1};
int len = 0;
len = sizeof(array) / sizeof(array[0]);
for(i = 0;i < len-1;i++){
for(j = 0;j < len-1-i;j++){
if(array[j] < array[j+1]){
tmp = array[j];
array[j] = array[j+1]; //相邻两个数交换
array[j+1] = tmp;
}
}
}
for(i = 0;i < len; i++){
printf("%d ",array[i]);
}
return 0;
}
34 66 12 43 1 每行黄色为互相比较的两个数据 | |||||
i=0 j=0 | 66 | 34 | 12 | 43 | 1 |
j=1 | 66 | 34 | 12 | 43 | 1 |
j=2 | 66 | 34 | 43 | 12 | 1 |
j=3 | 66 | 34 | 43 | 12 | 1 |
i=1 j=0 | 66 | 34 | 12 | 43 | 1 |
j=1 | 66 | 34 | 43 | 12 | 1 |
j=2 | 66 | 34 | 43 | 12 | 1 |
i=2 j=0 | 66 | 34 | 43 | 12 | 1 |
j=1 | 66 | 34 | 43 | 12 | 1 |
i=3 j=0 | 66 | 34 | 43 | 12 | 1 |
表格为个人理解,如有错误欢迎指正