1 / 1 / 1
Регистрация: 18.05.2014
Сообщений: 37
1

Как устроена сортировка в приведенном коде

18.05.2014, 18:31. Показов 559. Ответов 5
Метки нет (Все метки)

Язык СИ
Ребята, не знаю уже, что делать. Скоро сдавать программку, а я до сих пор не могу понять многого.
Мне одногрупник скинул прогу, которая подходит под мою задачу, но вот беда - разобраться в ней нужно.

А именно нужно понять как сделали сортировки. Что в них делают и тд.
Заранее спасибо.
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <stdlib.h>
void vvod(int n,int a[]);
void shella(int n, int a[],int *p,int *s);
void chelnoch(int n,int a[],int *p,int *s);
void vivod(int n, int a[],int p,int s);
int main()
{ int const n=100;
int p=0,s=0;
int a[n];
vvod(n,a);
shella(n,a,&p,&s);
vivod(n,a,p,s);
vvod(n,a);
p=0; s=0;
chelnoch(n,a,&p,&s);
vivod(n,a,p,s);
}
 
void vvod(int n,int a[])
{
int i;
FILE*in;
in=fopen("in.txt","r");
if (in==NULL)
{
printf("net file\n");
exit(0);
}
for (i=0;i<n;i++)
{
fscanf (in,"%d ",&a[i]);
}
fclose(in);
}
 
void shella(int n,int a[],int *p,int *s)
{ int i=0,j,x,m,k,t=5;
int h[]={9,5,3,2,1};
for (m=0;m<t;m++)
{
k=h[m];
for (i=k;i<n;i++)
{
x=a[i];
j=i-k;
(*s)++;
while ((x<a[j])&&(j>=0))
{
a[j+k]=a[j];
j=j-k;
(*s)++;
(*p)++;
}
if ((j+k)!=i)
{
a[j+k]=x;
(*p)++;
}
}
}
}
 
void chelnoch(int n,int a[],int *p,int *s)
{ int j,l=1,k,m;
k=n-1;
m=n-1;
int x;
while(l<m)
{for(j=l;j<=m;j++)
{
(*s)++;
if(a[j]<a[j-1])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
(*p)++;
}
}
m=k-1;
for(j=m;j>=l;j--)
{
(*s)++;
if(a[j]<a[j-1])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
(*p)++;
 
}
}
l=k+1;
}
 
}
 
void vivod(int n, int a[],int p,int s)
{
int i;
FILE *t;
t=fopen("out.txt","a");
for(i=0;i<n;i++)
{
fprintf(t,"%d ",a[i]);
}
fprintf(t,"perestanovok =%d\n",p);
fprintf (t,"sravnenie =%d\n",s);
fprintf(t,"\n");
fclose(t);
printf("DONE!!!");
}
Добавлено через 2 часа 34 минуты
Народ
Срочно нужно(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2014, 18:31
Ответы с готовыми решениями:

Не работает сортировка в приведенном коде
Здравствуйте. У меня такая проблемка. Не работает сортировка... Вот часть кода сортировки,...

Как в приведенном коде работает malloc?
#include &lt;stdio.h&gt; #include &lt;memory.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include...

Реализовать функции в приведенном коде
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; const int n=25;...

Объясните условие в приведенном коде
К Этой программе вопрос такой: для чего есть условие if( (src!=' ')|| ( (src==' ')&amp;&amp;(src!=' ') ) ),...

5
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
19.05.2014, 16:39 2
Эта программа сортирует массив используя два алгоритма: сортировка Шелла и челночная сортировка.
Принцип работы
1) массив считывается из файла
2) сортировка Шелла
3) запись результатов сортировки в файл
4) массив считывается из файла
5) челночная сортировка
6) добавление результатов сортировки в файл

подробней про каждый метод ищите в сети
0
1 / 1 / 1
Регистрация: 18.05.2014
Сообщений: 37
20.05.2014, 04:46  [ТС] 3
Да все, что вы ответили, я знаю.
Там же это подписано. Мне именно про сортировки узнать. Что в них делают. Как это происходит.
Просто по каждой строчке нужно
0
1 / 1 / 1
Регистрация: 18.05.2014
Сообщений: 37
23.05.2014, 23:56  [ТС] 4
help me
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
24.05.2014, 00:03 5
Шелла
Челночная
0
1 / 1 / 1
Регистрация: 18.05.2014
Сообщений: 37
02.06.2014, 21:04  [ТС] 6
Я просил объяснить, что находится в коде. Что где и как. А не скидывать сслыки с гугла. Я умею им пользоваться.

Добавлено через 23 часа 53 минуты
Если можно, то только челночную объясните.
Какой и за что элемент отвечает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2014, 21:04
Помогаю со студенческими работами здесь

Исправить ошибки в приведенном коде
#include &lt;stdio.h&gt; struct list { char name; char sport; char year; char...

Что выполняет arr в приведенном коде?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define N 10 int main(int argc, char *argv) { int...

Найти и исправить ошибки в приведенном коде
# include&lt;conio.h&gt; # include&lt;stdio.h&gt; # include&lt;string.h&gt; # include&lt;stdlib.h&gt; ...

Используются ли динамические массивы в приведенном коде?
В общем перейдут сразу к делу. Задание было таким: Создать двумерный динамический массив и...


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

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

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