没有合适的资源?快使用搜索试试~ 我知道了~
介绍12种常用编程算法冒泡排序、选择排序、插入排序、快速排序、二分法、深度优先搜索、广度优先搜索、递归算法、哈希算法等等,以及C语言实例。
资源推荐
资源详情
资源评论

















常用编程算法及 C 语言实例
一、常用编程算法有:
1. 冒泡排序:通过不断交换相邻的两个元素,将较大的元素一步步地移到数组的末端。
2. 选择排序:每次从未排序的元素中找出最小(或最大)的元素,存放到排序序列的起始
位置。
3. 插入排序:每次将一个新的元素插入到已排序序列中,从而得到一个新的、更长的已排
序序列。
4. 快速排序:采用分治法,在数组中选择一个基准元素,将数组分为两个子数组,使得一
个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于基准元素,然后对子
数组递归地进行快速排序。
5. 归并排序:采用分治法,将数组分为两个子数组,分别对子数组进行归并排序,然后将
两个已排序的子数组合并成一个有序的数组。
6. 二分查找:在有序数组中查找某一特定元素,每次将查找范围缩小一半,直到找到目标
元素或查找范围为空。
7. 深度优先搜索(DFS):一种用于遍历或搜索树或图的算法。从根(或任意节点)开始,
沿着子节点进行搜索,直到到达叶子节点或无法继续搜索为止,然后回溯到前一个节点,继
续搜索下一个子节点。
8. 广度优先搜索(BFS):一种用于遍历或搜索树或图的算法。从根(或任意节点)开始,
遍历所有相邻的节点,然后对每个相邻节点进行同样的操作,直到遍历完所有节点。
9. 堆排序:首先将待排序的序列构造成一个大顶堆(或小顶堆),然后将堆顶元素与堆尾
元素交换,然后调整剩余元素使其继续保持堆的性质,如此循环直到所有元素排序完毕。
10. 希尔排序:首先将待排序的序列分割成若干个子序列,对每个子序列进行插入排序,然
后逐步缩小子序列的长度,最终使整个序列成为有序。
11. 递归算法:一种使用递归(函数或算法调用自身的过程)解决问题的方法。递归算法对于
解决某些类型的问题特别有效,例如排序、搜索数据结构、遍历目录树等。
12. 哈希算法:一种密码散列函数家族,能计算出一个数字消息所对应到的,长度固定的字
符串(又称消息摘要)的算法。
二、C 语言实例
1. 冒泡排序:
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;

for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
2. 选择排序:
#include <stdio.h>
void selection_sort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
selection_sort(arr, n);
printf("Sorted array: ");

for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
3. 插入排序:
#include <stdio.h>
void insertionSort(int arr[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
int main() {
int arr[] = {5, 2, 4, 6, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
insertionSort(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
4. 快速排序:
#include <stdio.h>
// 交换数组中两个元素的位置
void swap(int* array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
// 快速排序函数
void quicksort(int* array, int left, int right) {
if (left < right) {
int pivot = array[right]; // 选择基准点为数组最后一个元素
剩余11页未读,继续阅读
资源评论


pjt1218
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
