0、排序算法_选择排序:
- 概念:每次排序把未排序序列当中的极值找出来放到前面
#include<stdio.h>
#define SZ 5int main() {int a[SZ] = { 1,5,4,2,3 };int i, j, Max, Max_p,tem;for (i = 0; i <= ((sizeof(a) / sizeof(a[0])) - 2); i++) {Max = a[i];Max_p = i;for (j = i + 1; j <= ((sizeof(a) / sizeof(a[0])) - 1); j++) {if (a[j] > Max) {Max_p = j;Max = a[j];}}tem = a[i];a[i] = a[Max_p];a[Max_p] = tem;printf("第%d轮Max:%d\n", i,Max);}printf("===========");for (i = 0; i < SZ; i++) {printf("%d ", a[i]);} return 0;
}
1、排序算法_冒泡排序:
- 概念:每次排序把未排序序列当中的极值找出来放到前面
#include<stdio.h>
int main(){
int i, j,tem;
for (i = 0; i < SZ - 1; i++) {for (j = 0; j < SZ-i; j++) {if (a[j] < a[j + 1]) {tem = a[j];a[j] = a[j + 1];a[j + 1] = tem;}}
}
for (i = 0; i < SZ; i++) {printf("%d ", a[i]);
}
return 0;
}
2、排序算法_插入排序:
- 概念:每次排序把未排序序列当中的极值找出来放到前面
#include<stdio.h>
int main(){int a[SZ] = { 1,5,4,2,3 };int i,j, tem;for (i = 1; i <= SZ - 1; i++) {tem = a[i];j = i;while (j>0) {if (a[j-1] < a[j]) {tem = a[j];a[j] = a[j - 1];a[j - 1] = tem;}j--;}}for (i = 0; i < SZ; i++) {printf("%d ", a[i]);}return 0;
}
3、建立在有序序列基础之上的查找方法:二分法查找
- 思路,设置三个变量分别指向序列的最小值,中间值和最大值,每次循环就判断要查找的数值比中间值大还是比中间值小,移动最小值和最大值的位置,每次都能排除一半留下一半。
总结: