用C语言编写,选择排序
更新日期:2026-11-12 19:49:10
| 标题 | 用C语言编写,选择排序 | ||||||||||||||||
| 内容 | 选择排序是一种简单直观的排序算法,其基本思想是:在未排序序列中找到最小(或最大)元素,将其放到已排序序列的末尾。通过不断重复这一过程,最终实现整个序列的有序排列。 一、选择排序原理总结 1. 基本思想 每次从待排序的数据中选出最小(或最大)的元素,存放到已排序序列的末尾。 2. 算法步骤 - 从数组的第一个元素开始,遍历整个数组。 - 找出当前范围内最小的元素的位置。 - 将该元素与当前遍历位置的元素交换。 - 重复上述步骤,直到所有元素排序完成。 3. 时间复杂度 - 最坏情况:O(n²) - 最好情况:O(n²) - 平均情况:O(n²) - 空间复杂度:O(1)(原地排序) 4. 适用场景 适用于小规模数据排序,不适用于大规模数据。 5. 优点 - 实现简单 - 内存使用少(原地排序) 6. 缺点 - 效率低 - 不稳定(当有相同元素时,可能改变相对顺序) 二、C语言实现代码示例 ```c include void selectionSort(int arr[], int n) { int i, j, min_idx, temp; 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; } } // 交换最小元素和当前元素 temp = arr[min_idx]; arr[min_idx] = arr[i]; arr[i] = temp; } } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr)/sizeof(arr[0]); printf("原始数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } selectionSort(arr, n); printf("\n\n排序后数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 三、算法对比表
四、总结 选择排序虽然在效率上不如快速排序、归并排序等高级算法,但因其结构简单、易于理解,仍然是学习排序算法的一个良好起点。对于实际应用中的小型数据集,选择排序是一个可行的选择。掌握其原理和实现方式,有助于进一步理解更复杂的排序算法。 | ||||||||||||||||
| 随便看 |