c - 为什么这种排序不起作用? (C)

标签 c sorting selection-sort

我正在尝试创建一种基于选择排序算法的排序方法 使用当前代码,数组 [10, 9, 8 .. 1] 被“排序”为 [9, 8 .. 2, 10, 1] 我的意思是,它甚至没有把 10 放在正确的位置

10 9 8 7 6 5 4 3 2 1

“排序”为

9 8 7 6 5 4 3 2 10 1

有什么问题吗?

void selectionSort(int array[], int length)
{
    int i = 0, j = 0, temp = 0, swap = 0;
    for(i = 0; i < length; i++)
    {
        temp = i;
        for(j = 0; j < length; j++)
        {
            if(array[temp] > array[j])
            {
                temp = j;
            }
        }
        swap = array[temp];
        array[temp] = array[i];
        array[i] = swap;
    }
}

最佳答案

内部循环应该这样写

for(j = i + 1; j < length; j++)
    ^^^^^^^^^        

关于c - 为什么这种排序不起作用? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41780690/

相关文章:

c - 从结构体中的指针获取数组

arrays - 过滤器以在 Angular js 中对 JSON 数据进行排序

sql - 如何对 PostgreSQL JSON 字段进行排序

c - C中数组冒泡排序和二分查找的组合代码问题

c++ - 选择排序循环中的错误

c - 求和乘法模

c - CreateContext 期间的 BAD_CONFIG

c - 通过直接在函数处理程序中使用写入函数的用户空间缓冲区来节省内存(Linux,内核)?

c - 使用带有指针的数组,如何使用选择排序对数字进行排序?

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