当前位置:新励学网 > 秒知问答 > c语言排选择序代码详细讲解

c语言排选择序代码详细讲解

发表时间:2024-07-28 05:01:49 来源:网友投稿

选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的数列中选择最小(或最大)的元素,然后将其放到数列的起始位置,再从剩余的未排序元素中继续寻找最小(或最大)元素,放到已排序的元素序列的末尾,以此类推,直到所有元素排序完毕。

下面是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 循环,且每次循环都要比较未排序元素中的最小元素。虽然时间复杂度比较高,但是选择排序的实现比较简单,不需要额外的空间,所以在一些简单的排序场景中还是比较常用的。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!