下面是用 C 编程语言实现的选择排序算法的示例:
'''c
#include <stdio.h>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// Swap arr[i] and arr[minIndex]
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Array before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
selectionSort(arr, n);
printf("\nArray after sorting:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
'''
在此示例中,“selectionSort”函数将数组“arr”及其长度“n”作为参数。它遍历数组并在数组的未排序部分找到最小元素,并将其与最左侧的未排序元素交换。重复此过程,直到对整个数组进行排序。
该算法的时间复杂度为 O(n^2),其中 n 是数组中的元素数。这是因为对于每个元素,该算法执行线性搜索以查找数组剩余未排序部分中的最小元素。因此,该算法可能不是大型数组的最有效选择。但是,它具有简单性的优点,并且需要最少的额外内存,因此适用于小型数组或部分排序的数组。
在此示例中,数组“{64, 25, 12, 22, 11}”使用“selectionSort”函数进行排序。将显示初始数组,后跟排序后的数组。排序后,输出将是:
'''
排序前的数组:
64 25 12 22 11
排序后的数组:
11 12 22 25 64
'''
这演示了 C 语言中选择排序算法的基本实现和用法。