template <class ElemType> void Show(const ElemType &e) // 操作结果: 显示数据元素 { cout << setw(2) << e << " "; } template<class ElemType> void ShowRunK(LinkList<ElemType> &la, int k) // 操作结果: 显示链表la的各数据元素值 { ElemType e; cout << "第" << setw(2) << k << "趟排序结果:"; la.Traverse(Show); cout << endl; } template <class ElemType> void SelectSort(LinkList<ElemType> &la) // 操作结果: 以带头结点的单链表为存储结构实现简单选择排序 { ElemType t; ElemType check; ElemType emin; int min; for (int i = 1; i < la.Length(); i++) { la.GetElem(i,emin); min = i; for (int j = i + 1; j <= la.Length(); j++) { la.GetElem(j, check); if (check < emin); { min = j; la.GetElem(j, emin); } } la.GetElem(i, t); la.SetElem(i, emin); la.SetElem(min, t); ShowRunK(la, i); } }修改并优化代码并在每趟排序完成后,应调用alg6.h中提供的ShowRunK函数显示该趟排序的结果
时间: 2024-01-26 15:03:38 浏览: 63
以下是修改并优化后的代码:
```cpp
template<class ElemType>
void SelectSort(LinkList<ElemType> &la)
{
for (int i = 1; i < la.Length(); i++)
{
ElemType emin;
la.GetElem(i, emin);
int min = i;
for (int j = i + 1; j <= la.Length(); j++)
{
ElemType check;
la.GetElem(j, check);
if (check < emin)
{
min = j;
emin = check;
}
}
if (min != i)
{
ElemType t;
la.GetElem(i, t);
la.SetElem(i, emin);
la.SetElem(min, t);
}
ShowRunK(la, i);
}
}
```
在每趟排序完成后,调用`alg6.h`中提供的`ShowRunK`函数,可以显示该趟排序的结果。
阅读全文