上一篇
在学习编程的过程中,排序算法是一个非常重要的基础内容。今天,我们将详细讲解一种最基础、最容易理解的排序方法——C语言选择排序。无论你是编程小白还是刚接触选择排序算法的新手,这篇C语言排序教程都会带你一步步掌握它的原理和实现。
选择排序(Selection Sort)是一种简单直观的简单排序算法。它的基本思想是:每一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
假设我们有一个数组:[64, 25, 12, 22, 11],我们要对它进行升序排序。
11,与第一个元素 64 交换 → [11, 25, 12, 22, 64][25, 12, 22, 64] 中找最小值 12,与第二个元素 25 交换 → [11, 12, 25, 22, 64][25, 22, 64] 中找最小值 22,与第三个元素 25 交换 → [11, 12, 22, 25, 64][25, 64] 中找最小值 25,已在正确位置,无需交换下面是一个完整的 C 语言选择排序代码示例:
#include <stdio.h>// 选择排序函数void selectionSort(int arr[], int n) { int i, j, minIndex, temp; // 遍历整个数组 for (i = 0; i < n - 1; i++) { // 假设当前位置是最小值 minIndex = i; // 在未排序部分查找真正的最小值 for (j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 如果最小值不在当前位置,则交换 if (minIndex != i) { temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } }}// 打印数组函数void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n");}// 主函数int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前: "); printArray(arr, n); selectionSort(arr, n); printf("排序后: "); printArray(arr, n); return 0;} selectionSort 函数接收一个整型数组和数组长度。i 控制已排序部分的边界。j 从 i+1 开始,在未排序部分中查找最小元素的索引 minIndex。minIndex。arr[i] 交换。| 特性 | 说明 |
|---|---|
| 时间复杂度 | O(n²),无论最好、最坏、平均情况都是如此 |
| 空间复杂度 | O(1),原地排序,只使用常数额外空间 |
| 稳定性 | 不稳定(相同元素的相对位置可能改变) |
选择排序虽然效率不高,但因其逻辑清晰、代码简洁,非常适合初学者理解排序的基本思想。通过本篇C语言选择排序教程,你已经掌握了选择排序的核心原理、C语言实现方式以及其优缺点。希望你能动手敲一遍代码,加深理解!
记住,掌握选择排序算法是迈向更复杂算法(如快速排序、归并排序)的第一步。继续加油,编程之路越走越宽广!
本文由主机测评网于2025-12-17发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129018.html