与以下选择排序代码混淆

标签 c selection-sort

int i, j, t;

for (i = 0; i < n - 1 ; i++) {
    for (j = i + 1; j < n; j++) {
        if (a[i] > a[j]) {
            t = a[i]; 
            a[i] = a[j]; 
            a[j] = t;
        }
    }
}  

我的问题是上面的代码是否是正确的选择排序代码?我从各种书籍中得到了这个代码。如果不正确,请解释原因。

最佳答案

是的,代码是正确的。基本上,按升序对数组进行排序将花费昂贵的O(n^2)

在每一步 i [0..n-1] 中,您都将索引 [i..n-1] 中最小的元素放入索引

交换函数可确保您连续两个比较值中较小的值放置在i索引处。

关于与以下选择排序代码混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422694/

相关文章:

c++ - 如何在 C 宏中连接变量字符串和文字字符串?

java - Java中对象数组的降序选择排序

c - 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

将 C 头文件转换为 delphi

c - 为什么我无法访问所定位的内存?

c - 使用 OpenMP 进行矩阵相乘比序列化方式花费更多时间

c++ - 按字母顺序选择排序程序的问题

c - C中的选择排序程序

javascript - 为什么我的选择排序代码在有重复数字时不起作用?

c++ - 随机字符串数组的选择排序