24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1159  |  回复: 5

xiaolei@

金虫 (小有名气)

[求助] 求大侠帮忙看个程序

#include
#include

typedef struct node
{   char name[8];
int num;
int score;
int tax;
}Node;     //  候选人结构


void shellSort( Node **, int );

int main(void)
{
int n = 0;
Node * pArray[9];//指针数组,长度9
int count = 0;
//int status = 1;
int vote = -1;

printf("Input the number of the candidates(1-9):\n";
scanf("%d", &n);
while(getchar()!='\n')
{
  ;
}

while (n>9 || n<1)
{
  if (n>9)
  {
   printf("No, there cannot be so many candidates. Retry.\n";
  }
  else
  {
   printf("No candidates? It cannot be! Retry!\n";
  }
  scanf("%d", &n);
  while(getchar()!='\n')
  {
   ;
  }
}

for (count=0; count {
  pArray[count] = (Node *)malloc(sizeof(Node));
  pArray[count]->num = count+1;
  pArray[count]->tax = 0;
  pArray[count]->score = 0;
  printf("Input No.%d candidate's name:\n", count+1);
  gets(pArray[count]->name);
}

while (vote)
{
  printf("Now, let us vote:\n*************\n";
  for (count=0; count   {
   printf("%d. %s\n", count+1, pArray[count]->name);
  }
  printf("0.quit\n*************\n";
  scanf("%d", &vote);
  while(getchar()!='\n')
  {
   ;
  }
  
  while (vote<0 || vote>n)
  {
   printf("No joke, thank you. Revote.\n";
   scanf("%d", &vote);
   while(getchar()!='\n')
   {
    ;
   }
   
  }
  if (vote>0&&vote<=n)
  {
   pArray[vote-1]->score++;
  }
}

printf("Finish voting. Let's find the winner......\n\n";

shellSort( pArray, n );

for (count=0; count {
                  pArray[count]->tax=count+1;
  printf("%d. %s %d votes.\n", count+1, pArray[count]->name, pArray[count]->score);
}

for(count=0; count {
  free(pArray[count]);
  pArray[count] = NULL;
}

return 0;
}

void shellSort( Node *p[], int len )
{
const int Length = len;
int i = 0;
int j = 0;
int gap = 0;
Node *temp = NULL;

gap = Length/2;

while (gap>0)
{
  for (i=gap; i   {
   j = i - gap;
   temp = *(p+i);
   
   while ( (j>=0) && (p[j]->score < temp->score) )
   {
    *(p+j+gap) = *(p+j);
    j = j - gap;
   }
   
   *(p+j+gap) = temp;
  }
  gap /= 2;
}
}
谁能帮忙看下这个程序的每个函数的时间复杂度空间复杂度是多少?还有最后个希尔排序算法每步的意思。谢谢啦
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

英雄就是做任何事都全力以赴!!!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lt292

金虫 (正式写手)

Holy Shit

我表示,我已经看不懂指针是什么意思了
好久没看到c程序了
记忆中的颜色,慢慢褪去,变成一缕缕的黑丝,最终消失在茫茫的空白里,一去不返```
2楼2011-12-30 16:19:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lt292

金虫 (正式写手)

Holy Shit

xzhdty: 欢迎常来 2011-12-30 20:09:50
lz程序建议给个缩进啊,看起来层次有点乱
编程风格很重要
记忆中的颜色,慢慢褪去,变成一缕缕的黑丝,最终消失在茫茫的空白里,一去不返```
3楼2011-12-30 16:20:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaolei@

金虫 (小有名气)

引用回帖:
: Originally posted by lt292 at 2011-12-30 16:20:54:
lz程序建议给个缩进啊,看起来层次有点乱
编程风格很重要

额....还是初学...不太会
英雄就是做任何事都全力以赴!!!
4楼2011-12-30 17:12:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jxt1234

新虫 (初入文坛)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
余泽成(金币+2): 谢谢参与应助,新年快乐! 2011-12-31 18:27:09
xiaolei@(金币+10): ★★★很有帮助 谢谢啦 课程设计要求 所以才这样的。 2011-12-31 19:42:43
这个程序就是输入侯选人票数并做个希尔排序么。。
关于排序算法建议回去看数据结构。。。
希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
其实按这个程序流程不如构造大顶堆效率。。
5楼2011-12-31 15:58:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ruby0531

新虫 (小有名气)


jjdg(金币+1): 感谢发表意见 2012-01-05 03:10:23
希尔是nlgn吧  另  lz的{}记得不同层之间缩进啊
6楼2012-01-04 16:27:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiaolei@ 的主题更新
信息提示
请填处理意见