当前位置: 代码迷 >> C语言 >> 急!高手帮忙啊!简单编程!期末考试要考! 谢谢
  详细解决方案

急!高手帮忙啊!简单编程!期末考试要考! 谢谢

热度:360   发布时间:2008-06-21 10:28:09.0
急!高手帮忙啊!简单编程!期末考试要考! 谢谢
假设线性表采用如下定义的存储结构:
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]]
搜索更多相关的解决方案: SqList  nodeType  定义  

----------------解决方案--------------------------------------------------------
直接选择排序?

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!
谢谢 各位啊!
----------------解决方案--------------------------------------------------------