Вопрос: Сортировка методом выбора

Тема в разделе "Общие вопросы по С и С++", создана пользователем motobiker93, 10 дек 2010.

  1. motobiker93

    motobiker93 Гость

    Задача отсортировать рекурсивно список методом выбора минимального элемента и перестановки его в начало.
    Код (C++):
    #include<stdio.h>
    #include<stdlib.h>
    struct sp
    {
    int inf;
    struct sp *next;
    }*f=NULL;


    void poisk(struct sp *p,int coun)
    {
    struct sp *k=0,*m=f,*l=f,*t=NULL,*pp=NULL,*temp=NULL;
    int min=0,ko=0;
    while(ko<coun/2) //return;
    //if(ko>=coun/2) return;
    {
    min=m->inf;
    for(t=m;t!=NULL;t=t->next)
    {
    if(t->inf<min)
    {
    min=t->inf; k=t;
    }

    }


    if(k->next!=NULL)
    {
    for(t=m;t->next!=k->next;t=t->next)
    pp=t;
    temp=k->next;
    k->next=m->next;
    pp->next=m;
    m->next=temp;
    m=k;
    }
    else
    if(k->next==NULL)
    {

    for(t=m;t->next!=NULL;t=t->next)
    pp=t;
    p->next=m->next;
    pp->next=m;
    m->next=NULL;
    m=p;
    }
    ko++;
    //  printf("%d",m->inf);
    //printf("\n");
    //l=m;
    if(ko==1)l->next=m->next;
    m=m->next;


    //for(t=m;t!=NULL;t=t->next)
    //printf("\n %d", t->inf);
    //printf(" ");
    //poisk(p,coun);
    }
    f=l->next;
    for(t=f;t!=NULL;t=t->next)
    printf("\n %d", t->inf);
    return;


    }


    void main()
    {
    struct sp *t=0,*p=0,*m=NULL;
    int ans=0,check=0, coun=0,min=0;
    while(1)
    {
    printf("\n Dobavite element 1/0 \n");
    scanf("%d",&ans);
    if(ans==0) break;
    t=malloc(sizeof(struct sp));
    if(t==NULL)
    {
    printf("\n ne ydalos videlit pamiat");
    break;
    }
    t->next=NULL;
    printf("\n vvedite elementi spiska");
    check=scanf("%d",&t->inf);
    if(check==0)
    {
    printf("\n error in statement");
    return;
    }
    if(f==NULL)
    {
    f=t; p=t;
    }
    else
    {
    p->next=t; p=t;
    }
    }

    for(t=f;t!=NULL;t=t->next)
    coun++;
    m=f;
    poisk(p,coun);

    //  for(t=f;t!=NULL;t=t->next)
    //  printf("\n %d", t->inf);
    for(t=f;t!=NULL;t=f)
    {
    f=f->next;
    free(t);
    }

    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Это твоя разработка?
     
Загрузка...
Похожие Темы - Вопрос Сортировка методом
  1. Генералл
    Ответов:
    2
    Просмотров:
    61
  2. ApplePen
    Ответов:
    0
    Просмотров:
    62
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    93
  4. ghost
    Ответов:
    1
    Просмотров:
    88
  5. kartaman
    Ответов:
    0
    Просмотров:
    128

Поделиться этой страницей