C 语言_常见排序算法全解析
排序算法是计算机科学中的基础内容,本文将介绍 C 语言中几种常见的排序算法,包括实现代码、时间复杂度分析、适用场景和详细解析。
一、冒泡排序(Bubble Sort)
基本思想:重复遍历数组,比较相邻元素,将较大元素交换到右侧。
代码实现:
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;}}}
}
详细图解:
以数组 [5, 3, 8, 4, 6]
为例:
- 第一轮:比较 5 和 3,交换得
[3, 5, 8, 4, 6]
;比较 5 和 8,不交换;比较 8 和 4,交换得[3, 5, 4, 8, 6]
;比较 8 和 6,交换得[3, 5, 4, 6, 8]
。最大元素 8 移到末尾。 - 第二轮:处理前 4 个元素
[3, 5, 4, 6]
,比较后得[3, 4, 5, 6, 8]
。 - 第三轮:处理前 3 个元素
[3, 4, 5]
,数组已有序,但算法仍需继续。 - 第四轮:处理前 2 个元素
[3, 4]
,最终完成排序。
二、选择排序(Selection Sort)
基本思想:每次从未排序部分选择最小元素,放到已排序部分末尾。
代码实现:
void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[min_idx]) {min_idx = j;}}if (min_idx != i) {int temp = arr[i];arr[i] = arr[min_idx];arr[min_idx] = temp;