急!高手帮忙啊!简单编程!期末考试要考! 谢谢
假设线性表采用如下定义的存储结构:Typedef struct{
KeyType key;
infoType otherinfo;
}nodeType;
typedef nodeType SqList[MAXLEN];
用C语言编写一个对 r 进行直接选择排序的算法
void sort(SqList r,int n)
{......}
[[it] 本帖最后由 sleetprince 于 2008-6-21 10:29 编辑 [/it]]
----------------解决方案--------------------------------------------------------
直接选择排序?
void SelectSort(SqList list,int len)
{
for (int i=1,j,k;i<len;i++)
{
for (j=i,k=i-1;j<len;j++)
if (list[j].key<list[k].key)k=j;
if (k>=i)SWAP(list[i-1],list[k]);
}
}
改了……
[[it] 本帖最后由 StarWing83 于 2008-6-21 14:03 编辑 [/it]]
----------------解决方案--------------------------------------------------------
回复 2# StarWing83 的帖子
嗯 先谢谢啦! 我去编译看看啊 ----------------解决方案--------------------------------------------------------
if(min != i) // ?? 这个
----------------解决方案--------------------------------------------------------
?不对么?min记录的是下标耶……
----------------解决方案--------------------------------------------------------
for(int i=1,min;min=i-1,i<n;i++)
{
for(int j=i;j<n;j++)
if(r[min].key > r[j].key)
min=j;
if(min!=i) // i 在第一次循环为 1
swap(r[min],r[j]); // j == N
}
----------------解决方案--------------------------------------------------------
哦,不好意思,的确是Bug,因为懒得写诸如i<n-1这种代码~~~~
我调一下好了……
----------------解决方案--------------------------------------------------------
Thank you very much!
谢谢 各位啊! ----------------解决方案--------------------------------------------------------