📅  最后修改于: 2023-12-03 15:41:57.410000             🧑  作者: Mango
选择排序是一种简单的排序算法,它的基本思想是每次从未排序的序列中选择一个最小或最大的元素,放到已排序序列的末尾。
void selectionSort(int arr[], int n) {
int i, j, minIndex, tmp;
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) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}
arr
:要排序的数组。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;
}
Sorted array:
11 12 22 25 64
选择排序的时间复杂度为 $O(n^2)$,因为要进行两层嵌套的循环遍历,每次最多交换一次元素。
选择排序的空间复杂度为 $O(1)$,因为只需要用到少量的额外空间来交换元素。
选择排序是一种简单、直观的排序算法,虽然其时间复杂度较高,但对于小规模的数据集仍然有着不错的性能表现。