1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. motobiker93

    motobiker93 Гость

    Репутация:
    0
    Задача отсортировать рекурсивно список методом выбора минимального элемента и перестановки его в начало.
    Код:
    #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

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Это твоя разработка?
     
Загрузка...

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