一、冒泡排序(Bubble Sort)
- 1.算法描述:
第一个与第二个比较,如果第一个比第二个大那么就交换他们两个的值;
然后依次比较且交换到末尾 - 2.动图展示展示
- 3.代码实现
int bubbleSort(int arr[]) {
int len = strlen(arr);
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
二、选择排序(Selection Sort)
- 1.算法描述:
首先在未排序的序列中找到最小(大)元素,然后存放到序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 - 2.动图展示:
- 3.代码实现:
#include "stdio.h"
int main(){
int i,j,t,a[11];
for(i = 1;i < 11; i++)
scanf("%d",&a[i]);
for(i = 1;i <= 9; i++)
for (j = i+1;j <= 10; j++)
if(a[i] > a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
三、递归及其实现
- 1.算法描述
函数的递归调用就是特殊的嵌套:直接或者简介的调用自己
可以理解为:
归纳出后一个结果与前一个结果存在的关系 即(递归公式),知道满足某个条件 即(递归边界)才会停止递归调用,然后逐级推出结果并返回 -
例一:用循环和递归的方法实现1+2+3+…+n的和
#include "stdio.h"
long add(int n){
if(n == 1)
return 1;
else
return add(n - 1) + n;
}
int main(){
int n;
scanf("%d",&n);
printf("前%d项和为%d",n,add(n));
return 0;
}
#include "stdio.h"
long pow(int n){
if(n == 1)
return 1;
else
return pow(n - 1) * n;
}
int main(){
int n;
scanf("%d",&n);
printf("前%d项乘积为%d",n,pow(n));
return 0;
}
#include "stdio.h"
long fab(int n){
if(n == 1)
return 1;
if(n == 2)
return 1;
return fab(n - 1) + fab(n - 2);
}
int main(){
for (int i = 1; i <= 20; i++) {
printf("%d ",fab(i));
}
return 0;
}
- 图解