选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
选择排序是一种不稳定的排序算法,因为相同元素的相对位置可能会改变。
选择排序适用于数据量较小的情况,因为它的时间复杂度较高,不适合大规模数据的排序。
#include <stdio.h>
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;
}
}
void printArray(int arr[], int size) {
int i;
for (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]);
selectionSort(arr, n);
printf("Sorted array: \n");
printArray(arr, n);
return 0;
}
选择排序是一种简单但效率较低的排序算法,适用于小规模数据的排序。了解其基本原理和实现方法对于初学者理解排序算法有很大帮助。
领取专属 10元无门槛券
手把手带您无忧上云