C语言经典代码100是一本经典的C语言编程书籍,该书汇集了一百个经典的C语言代码,涵盖了各种编程领域,包括数据结构、算法、图形学、游戏开发等等。
以下是本人挑选出的几个经典代码:
1. 快速排序算法
快速排序是常见的排序算法,它的时间复杂度为O(nlogn)。它的代码如下:
```
void quick_sort(int arr[], int left, int right) {
int i, j, pivot;
if(left < right) {
i = left;
j = right + 1;
pivot = arr[left];
do {
do i++; while(arr[i] < pivot);
do j--; while(arr[j] > pivot);
if(i < j) swap(arr[i], arr[j]);
} while(i < j);
swap(arr[left], arr[j]);
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
}
```
2. Dijkstra算法
Dijkstra算法是一种求解最短路径的算法,它的时间复杂度为O(n^2)。它的代码如下:
```
void Dijkstra(int n, int start, int* dist, int* prev, int** matrix) {
bool* visited = new bool[n];
for(int i = 0; i < n; i++) {
dist[i] = matrix[start][i];
visited[i] = false;
if(dist[i] == INF) prev[i] = -1;
else prev[i] = start;
}
dist[start] = 0;
visited[start] = true;
for(int i = 1; i < n; i++) {
int min = INF;
int u = start;
for(int j = 0; j < n; j++) {
if(!visited[j] && dist[j] < min) {
min = dist[j];
u = j;
}
}
visited[u] = true;
for(int j = 0; j < n; j++) {
if(!visited[j] && matrix[u][j] < INF) {
int newdist = dist[u] + matrix[u][j];
if(newdist < dist[j]) {
dist[j] = newdist;
http://easiu.com/common/images/0w9Zbd1dP4_1.jpg
prev[j] = u;
}
}
}
}
delete[] visited;
}
```
3. Bresenham算法
Bresenham算法是一种绘制直线的算法,它的时间复杂度非常低,只需要进行加减法和位运算,因此非常适合在嵌入式系统和计算机游戏中使用。它的代码如下:
```
void Bresenham(int x1, int y1, int x2, int y2) {
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int sx = (x1 < x2) ? 1 : -1;
int sy = (y1 < y2) ? 1 : -1;
int err = dx - dy;
while(x1 != x2 || y1 != y2) {
http://easiu.com/common/images/awwnqofkqom.jpg
set_pixel(x1, y1);
int e2 = 2 * err;
if(e2 > -dy) {
err -= dy;
x1 += sx;
}
if(e2 < dx) {
err += dx;
y1 += sy;
}
}
}
```
以上是我挑选出的三个经典代码,它们分别代表了排序算法、图论算法和图形学算法的经典之作。在学习C语言编程时,我们可以通过学习这些经典代码来提高自己的编程能力和编程思维。
美的冷静星E2故障代码
海信电视待机键在哪里
奥克斯空调不通电
康佳29st217行管型号
电视机不能开机故障
格力空调自动停了e1
康佳背光电压过高
海信 316系列 电视
25寸电视行电压是多少
美的kfr120lw故障
热水器镁棒多久更换
格力空调漏水售后
美的挂机空调显示p1
格力变频机显示e6
小天鹅洗衣机 e62
美的洗衣机离合器棘轮
海信led55xt770g3d遥控对码
空调售后安装费用标准
lcd一32g100a无电源
tcll46E5500a-3d数据