编程语言算法归纳通常包括以下几个步骤:
确定算法类型
基本算法:如交换、累加、累乘等。
非数值计算常用经典算法:如穷举、排序(冒泡、选择)、查找(顺序即线性)等。
数值计算常用经典算法:如级数计算(直接、简接即递推)、一元非线性方程求根(牛顿迭代法、二分法)、定积分计算(矩形法、梯形法)等。
其他:如迭代、进制转换、矩阵转置、字符处理(统计、数字串、字母大小写转换、加密等)、整数各数位上数字的获取、辗转相除法求最大公约数(最小公倍数)、求最值、判断素数(各种变形)、数组元素的插入(删除)、二维数组的其他典型问题(方阵的特点、杨辉三角形)等。
详细讲解算法
基本算法:
交换:两量交换借助第三者,例如:
```c
int a = 3, b = 7;
int t = a;
a = b;
b = t;
printf("%d %d\n", a, b); // 输出 7 3
```
累加:形如“s=s+A”的累加式,必须在循环中反复执行,例如:
```c
int s = 0;
for (int i = 1; i <= 100; i++) {
s = s + i;
}
printf("%d\n", s); // 输出 5050
```
非数值计算常用经典算法:
排序(冒泡、选择):
```c
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
查找(顺序即线性):
```c
int linearSearch(int arr[], int n, int target) {
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
```
数值计算常用经典算法:
牛顿迭代法求一元非线性方程的根:
```c
double newtonRaphson(double f(double), double df(double), double x0, double tol) {
double x = x0;
while (abs(f(x)) > tol) {
x = x - f(x) / df(x);
}
return x;
}
```
二分查找:
```c
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
应用实例
通过具体实例展示算法的应用,例如:
交换两个整数的值:
```c
int main() {
int a = 3, b = 7;
int t = a;
a = b;
b = t;
printf("%d %d\n", a, b); // 输出 7 3
return 0;
}
```
计算1到100的和: