C语言八大经典算法

C语言八大经典算法C 语言八大经典算法 1 冒泡排序 Bubble Sort 描述 通过相邻元素比较和交换 将最大元素逐步 冒泡 到数组末尾

大家好,欢迎来到IT知识分享网。

C语言八大经典算法

C语言八大经典算法

1. 冒泡排序(Bubble Sort)

– 描述:通过相邻元素比较和交换,将最大元素逐步“冒泡”到数组末尾。

– 代码片段:

“`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])

swap(&arr[j], &arr[j+1]);

}

“`

– 示意图:可用箭头表示相邻元素比较和交换的过程。

2. 快速排序(Quick Sort)

– 描述:分治思想,选取基准值将数组分为两部分,递归排序。

– 代码片段:

“`c

int partition(int arr[], int low, int high) {

int pivot = arr[high];

int i = low – 1;

for (int j = low; j <= high-1; j++) {

if (arr[j] < pivot) {

i++;

swap(&arr[i], &arr[j]);

}

}

swap(&arr[i+1], &arr[high]);

return i+1;

}

void quickSort(int arr[], int low, int high) {

if (low < high) {

int pi = partition(arr, low, high);

quickSort(arr, low, pi-1);

quickSort(arr, pi+1, high);

}

}

“`

– 示意图:用树状图展示分治过程,标出基准值的位置。

3. 二分查找(Binary Search)

– 描述:在有序数组中通过折半缩小搜索范围。

– 代码片段:

“`c

int binarySearch(int arr[], int l, int r, int x) {

while (l <= r) {

int mid = l + (r – l) / 2;

if (arr[mid] == x) return mid;

if (arr[mid] < x) l = mid + 1;

else r = mid – 1;

}

return -1;

}

“`

– 示意图:绘制有序数组,标出中间值比较的过程。

4. 递归算法(Recursion)

– 描述:函数调用自身解决问题(如阶乘、斐波那契数列)。

– 代码片段(阶乘):

“`c

int factorial(int n) {

if (n == 0) return 1;

return n * factorial(n-1);

}

“`

– 示意图:用栈结构展示递归调用过程。

C语言八大经典算法

5. 动态规划(Dynamic Programming)

– 描述:通过子问题的最优解推导全局最优解(如背包问题)。

– 代码片段(斐波那契优化):

“`c

int fib(int n) {

int dp[n+1];

dp[0] = 0; dp[1] = 1;

for (int i = 2; i <= n; i++)

dp[i] = dp[i-1] + dp[i-2];

return dp[n];

}

“`

– 示意图:表格形式展示子问题的存储和复用。

6. 贪心算法(Greedy Algorithm)

– 描述:每一步选择当前最优解(如找零钱问题)。

– 代码片段(活动选择问题):

“`c

void activitySelection(int start[], int end[], int n) {

printf(“Selected Activity: 0 “);

int last = 0;

for (int i = 1; i < n; i++)

if (start[i] >= end[last]) {

printf(“%d “, i);

last = i;

}

}

“`

– 示意图:时间轴标注活动选择顺序。

7. 回溯算法(Backtracking)

– 描述:通过试错探索解空间,失败时回退(如八皇后问题)。

– 代码片段(八皇后问题片段):

“`c

void solveNQUtil(int board[N][N], int col) {

if (col >= N) return true;

for (int i = 0; i < N; i++) {

if (isSafe(board, i, col)) {

board[i][col] = 1;

if (solveNQUtil(board, col+1)) return true;

board[i][col] = 0; // 回溯

}

}

return false;

}

“`

– 示意图:棋盘上标注皇后的放置和冲突检测。

8. 深度优先搜索(DFS)与广度优先搜索(BFS)

– 描述:图遍历算法,DFS用栈/递归,BFS用队列。

– 代码片段(DFS递归实现):

“`c

void DFS(int v, int visited[], int graph[][V]) {

visited[v] = 1;

for (int i = 0; i < V; i++)

if (graph[v][i] && !visited[i])

DFS(i, visited, graph);

}

“`

– 示意图:用树或图结构展示遍历顺序。

C语言八大经典算法

如何生成图片?

1. 使用绘图工具(如Visio、Draw.io、Lucidchart)根据算法步骤绘制流程图。

2. 代码可视化工具:利用在线工具(如Code2Flow)将代码转换为流程图。

3. 手动绘制:根据上述描述,画出算法的关键步骤和数据结构。

如果需要更具体的某一种算法示意图设计,可以进一步说明需求!

C语言八大经典算法

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/177610.html

(0)
上一篇 2025-05-01 08:15
下一篇 2025-05-01 08:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信