简单选择排序是一种基本的排序算法,其核心思想是每一次从未排序的部分中选择一个最小(或最大)的元素,然后将其放置在已排序部分的末尾。这个过程逐渐将未排序的部分缩小,同时已排序的部分逐步增长,最终形成一个完全有序的数组。
以下是简单选择排序的基本思想步骤:
-
初始化:将数组划分为已排序部分和未排序部分。初始时,已排序部分为空,未排序部分包含整个数组。
-
寻找最小元素:从未排序部分中找到最小元素,并记录其位置。
-
交换元素:将找到的最小元素与未排序部分的第一个元素交换位置,这样最小元素就会被放置在已排序部分的末尾。
-
迭代:重复执行步骤 2 和步骤 3,直到未排序部分为空,也就是整个数组已排序完成。
简单选择排序的关键在于每次迭代都会选择未排序部分中的一个最小元素,然后将其插入到已排序部分的末尾。由于每次只涉及一个元素的交换,所以它在实际实现上较为简单。然而,由于其每次都需要在未排序部分中查找最小元素,导致时间复杂度为 O(n^2),使得其在大规模数据上的性能相对较差。在实际应用中,更高效的排序算法通常更受欢迎。
void SelectSort(int* arr,int len) {
int i, j, min;
for (i = 0; i < len; i++) {
min = i;
for (j = i + 1; j < len; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (i != min)
swap(&arr[i], &arr[min]);
}
}