0 / 0 / 1
Регистрация: 20.03.2012
Сообщений: 14
1

Неправильно работает сортировка вставками

20.03.2012, 21:00. Показов 640. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как я понял не работает функция Sort.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
int main()
{
    FILE *fp=fopen("start.txt","r");
    int count=0,t;
    while (!feof(fp))
    {
        fscanf (fp,"%d ",&t);
        count++;
    }
    fclose(fp);
    int *counts=&count;
    float dkoll=pow(count/3.,0.5);
    int lk=count/3;
    float *res=&dkoll;
    int *start;
    start=(int *)malloc(count*sizeof(int));
    FILE *fl=fopen("start.txt","r");
    for (int i=0;i<count/3;i++)
    {
        for (int q=0;q<3;q++)
        {
        fscanf(fl,"%d ",&start[i*3+q]);
        printf ("%d ",start[i*3+q]);
    }
    }
    fclose(fl);
    printf("\n%d\n",(int)*res);
    CreatSortLents ("buf.txt",res,counts,start);
 
    getch();
    return 0;
}
    void CreatSortLents (char *fname,float  *res, int *counts, int *start)
{
    int *sort=(int *)malloc(((int)*res *3)*sizeof(int));
    int j;
    FILE *fp=fopen(fname,"w");
    for (int y=0;y<(int)*res;y++)
    {
    for (int i=y;i<*counts/3;i+=(int)*res)
    {
        for (j=0;j<3;j++)
        {
            sort[i*3+j]=start[i*3+j];
            fprintf(fp,"%d ",sort[i*3+j]);
        }
    }
        Sort (sort,res);
        fprintf (fp,"\n");
    }
    fclose(fp);
}
 
 
void Sort (int *sort,float *res)
{
 
    int tmp[3],pos,b=0;
    for(int i=1;i<(int)*res;i++)
    {
        for(int l=0;l<3;l++)
        {
        tmp[l]=sort[i*3+l];
        }
        if(sort[i*3+b]==sort[(i-1)*3+b])
        {
            b++;
            i--;
        }
        else 
        {
        pos=i-1;
        while(pos>=0 && sort[pos*3+b]>tmp[b])
        {
            for (int l=0;l<3;l++)
            {
            sort[(pos+1)*3+l]=sort[pos*3+l];
            }
            pos=pos-1;
        }
        for (int l=0;l<3;l++)
        {
        sort[(pos+1)*3+l]=tmp[l];
        }
        b=0;
    }
    }
 
    for (int j=0;j<(int)*res;j++)
    {
        for (int q=0;q<3;q++)
        {
           printf ("%d ",sort[j*3+q]);
        }
        printf("\n");
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2012, 21:00
Ответы с готовыми решениями:

Сортировка вставками (не работает)
Программа генерирует массив в фаил и сортирует его методом вставок. Но сама сортировка не...

Сортировка работает неправильно
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() {...

Быстрая сортировка работает неправильно
Здравствуйте! Разбираюсь с быстрой сортировкой и что-то пошло не так. Компилятор ни на что не...

Сортировка вставками
Мне нужно написать программу, в которой бы присутствовала сортировка вставками. Желательно в...

1
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
21.03.2012, 12:24 2
А я вот ничего не понял
Воспользуйтесь тегами,чтобы можно было прочитать.

Добавлено через 15 часов 3 минуты
А само задание как звучит?
1
21.03.2012, 12:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2012, 12:24
Помогаю со студенческими работами здесь

Сортировка вставками
Отсортировать элементы методом вставками, и найти максимальное. Например задается массив чисел и...

Сортировка вставками
Сортировка вставками массивов из 3-х элементов Не до конца сортирует int tmp,pos,b=0; for(int...

Си. Сортировка вставками
Отсортировать массив в порядке убывания методом вставок

Сортировка вставками
Сортировка вставками: пусть первые k элементов упорядочены по возростанию. Берется (k+1)-ый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru