C语言经典算法大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言经典算法大全
1.冒泡排序算法
冒泡排序是一种简单但低效的排序算法,它通过多次遍历列表,比较相邻元素并交换位置,直到整个列表有序。

冒泡排序的时间复杂度为
O(n^2)。

```
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;
}
}
}
```
2.选择排序算法
选择排序是一种简单但高效的排序算法,它通过多次遍历列表,找到最小元素并将其放置在正确的位置上。

选择排序的时间复杂度也为
O(n^2)。

```
void selectionSort(int arr[], int n)
int minIndex, temp;
for (int i = 0; i < n-1; i++)
minIndex = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
}
}
//交换元素
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
```
3.插入排序算法
插入排序是一种简单但高效的排序算法,它通过将未排序的元素插入到已排序的列表中,逐步构建排序好的列表。

插入排序的时间复杂度为
O(n^2)。

```
void insertionSort(int arr[], int n)
int i, key, j;
for (i = 1; i < n; i++)
key = arr[i];
j=i-1;
while (j >= 0 && arr[j] > key)
arr[j + 1] = arr[j];
j=j-1;
}
arr[j + 1] = key;
}
```
4.快速排序算法
快速排序是一种高效的排序算法,它通过选择一个主元,将列表分割为两个子列表,其中一个子列表的所有元素都小于主元,另一个子列表的
所有元素都大于主元。

然后递归地对两个子列表进行排序。

快速排序的时间复杂度为O(nlogn)。

```
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);
}
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 swap(int* a, int* b)
int t = *a;
*a=*b;
*b=t;
```
以上仅列举了一些经典的C语言算法,还有很多其他种类的算法,如归并排序、堆排序、二分查找等等。

掌握这些算法可以帮助程序员更好地处理各种编程问题。

希望本篇文章对大家了解C语言算法有所帮助,谢谢!。

相关文档
最新文档