如何在链表上执行选择排序?

时间:2011-11-15 02:45:28

标签: c++ sorting linked-list selection

我正在尝试在链表上实现选择排序。我希望它直接在链表上执行,而不是副本,使用节点指针而不是我在这里粘贴的数组索引方法:

void listClass::selectionsort(int array[], int size)
{
    int startscan, minIndex, minValue;

for (startscan = 0; startscan < (size - 1); startscan++) 
{
    minIndex = startscan;
    minValue = array[startscan];
    for (int index = startscan + 1; index < size; index++) 
    {
        if (array[index] < minValue)
        {
            minValue = array[index];
            minIndex = index;
        }
    }
    array[minIndex] = array[startscan];
    array[startscan] = minValue;
}
}

我如何调整此功能以接受我的链接列表?并排序?我也不想使用任何类型的STL容器。

2 个答案:

答案 0 :(得分:1)

说清单是{90,13,5,12}。在开头开始指针。

{ * 90,13,5,12}

在指针之后找到最小的成员,然后在指针之前移动它。

{5, * 90,13,12}

在指针之后找到最小的成员,然后在指针之前移动它。

{5,12, * 90,13}

再次

{5,12,13, * 90}

再次

{5,12,13,90}

指针在列表末尾运行,我们完成了,列表已经排序。

答案 1 :(得分:0)

这是不带STL的链表上选择排序的C ++实现。 为了简化程序在不同情况下的测试,该程序创建具有随机数的给定大小的链表。

const { inspect } = require('util');

...

console.log( inspect(docs, { depth : null }) );

有关更多详细信息,请访问- https://github.com/SahdevKansal02/Data-Structures-And-Algorithms.git