c语言排选择序代码详细讲解
选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的数列中选择最小(或最大)的元素,然后将其放到数列的起始位置,再从剩余的未排序元素中继续寻找最小(或最大)元素,放到已排序的元素序列的末尾,以此类推,直到所有元素排序完毕。
下面是C语言实现选择排序的代码:
```c
void selection_sort(int arr[], int len) {
int i, j, min_index;
for (i = 0; i < len - 1; i++) {
min_index = i; // 假设最小元素的下标为i
for (j = i + 1; j < len; j++) {
if (arr[j] < arr[min_index]) {
min_index = j; // 更新最小元素的下标
}
}
if (min_index != i) {
// 将最小元素与第i个元素交换位置
int tmp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = tmp;
}
}
}
```
首先我们定义了一个名为 selection_sort 的函数,函数的参数列表包含一个整型数组 arr 和数组的长度 len。
接下来是两个 for 循环,第一个 for 循环的目的是遍历整个数组,第二个 for 循环的目的是在未排序的元素中寻找最小的元素。
其中min_index 变量用于记录当前未排序元素中最小元素的下标,初始化为 i,即假设最小元素的下标为 i。
在第二个 for 循环中,我们从 i+1 开始,因为前面的 i 个元素已经排好序了,不需要再次比较。如果找到了比当前最小元素还小的元素,就更新最小元素的下标。
当第二个 for 循环结束后,我们就可以得到当前未排序元素中的最小元素的下标,如果该下标不等于 i,说明当前未排序元素中的最小元素不是第 i 个元素,需要将其与第 i 个元素交换位置。
这样第 i 个元素就已经排好序了,接下来继续遍历数组,找到第 i+1 个元素并将其放到正确的位置,直到整个数组排序完成。
总体来说选择排序的时间复杂度为 O(n^2),因为需要嵌套两个 for 循环,且每次循环都要比较未排序元素中的最小元素。虽然时间复杂度比较高,但是选择排序的实现比较简单,不需要额外的空间,所以在一些简单的排序场景中还是比较常用的。
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇