我正在尝试在链表上实现选择排序。我希望它直接在链表上执行,而不是副本,使用节点指针而不是我在这里粘贴的数组索引方法:
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容器。
答案 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