0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 5

Сортировка вставками (не работает)

06.06.2017, 20:16. Показов 950. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа генерирует массив в фаил и сортирует его методом вставок. Но сама сортировка не происходит
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
 
int main(void) 
{
    srand(time(NULL));
    FILE *file; 
    int i, j=0, step=0, tmp=N;
    int *A=(int*)malloc(sizeof(int)*N);
    int mas[N];
    printf("Array:\n");
    for(i=0; i<N; ++i)
    {
        mas[i] = rand() %(100-(-100)+1)+(-100);
        printf("%d ", mas[i]);
    }
    puts("");
    if((file = fopen("C://out.dat","wb+"))==NULL)
        printf( "The file was not opened\n" ); 
    else
    {
        fwrite(&tmp,sizeof(int),1,file);
        fwrite(mas,sizeof(int),N,file);//òåïåðü â ôàéëå íàø ìàññèâ(áèíàðíûé) 
        rewind(file);
        fread(&step, sizeof(int), 1, file); 
        fread(A, sizeof(int), step, file);
        for(i = 1; i < N; i++)
        {
            tmp = A[i];
            for(j = i; j>=step; j-=step)
            {
                tmp=A[i];
                for(j=i-1; j>=0 && A[j]>tmp; j--)A[j+1]=A[j];   
            A[j+1] = tmp;
        }
    }
        printf("Sorted array:\n");
        for (i = 0; i < 100; i++)
        {
            printf("%d ", A[i]);
        } 
    }
    fclose(file);
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2017, 20:16
Ответы с готовыми решениями:

Неправильно работает сортировка вставками
Как я понял не работает функция Sort. int main() { FILE *fp=fopen(&quot;start.txt&quot;,&quot;r&quot;); int count=0,t; while (!feof(fp)) { ...

Сортировка вставками
Сортировка вставками массивов из 3-х элементов Не до конца сортирует int tmp,pos,b=0; for(int i=1;i&lt;(int)*res;i++) { ...

Сортировка вставками
Можете подробно обьяснить программу??? void sort (int *mas,int kol); int kol; int main(int argc, char *argv) { int i,mas; ...

9
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
06.06.2017, 20:43
Цитата Сообщение от Asaevd Посмотреть сообщение
Но сама сортировка не происходит
Бывает...
P.S. Вы всерьёз рассчитываете, что кто-то станет разбираться в деталях в этом мусорном коде?

А коды сортировки, в том числе и вставкой, можете смотреть здесь: Задачи по программированию на языке C (стр. 70 в тексте).
0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,092
Записей в блоге: 56
07.06.2017, 13:01
Цитата Сообщение от Asaevd Посмотреть сообщение
Но сама сортировка не происходит
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
 
int main(void) 
{
    srand(time(NULL));
    FILE *file; 
    int i, j=0, step=0, tmp=N, x;
    int *A=(int*)malloc(sizeof(int)*N);
    int mas[N];
    printf("Array:\n");
    for(i=0; i<N; ++i)
    {
        mas[i] = rand() %(100-(-100)+1)+(-100);
        printf("%d ", mas[i]);
    }
    puts("");
    if((file = fopen("C://out.dat","wb+"))==NULL)
        printf( "The file was not opened\n" ); 
    else
    {
        fwrite(&tmp,sizeof(int),1,file);
        fwrite(mas,sizeof(int),N,file);//òåïåðü Гў ГґГ*éëå Г*Г*Гё Г¬Г*Г±Г±ГЁГў(ГЎГЁГ*Г*Г°Г*ûé) 
        rewind(file);
        fread(&step, sizeof(int), 1, file); 
        fread(A, sizeof(int), step, file);
 
    for(i=1; i<step; ++i)
        {
            x=A[i];
            if(A[i-1]>x)
            {
                j=i-1;
                while(A[j]>x && j>=0)
                {
                    A[j+1]=A[j--]; 
                }
                A[j+1]=x;
            }
        }
        printf("Sorted array:\n");
        for (i = 0; i < 100; i++)
        {
            printf("%d ", A[i]);
        } 
    }
    fclose(file);
    return 0;
}
Цитата Сообщение от Olej Посмотреть сообщение
Вы всерьёз рассчитываете, что кто-то станет разбираться в деталях в этом мусорном коде?
Лучше предложи свой вариант, чем троллить.
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
07.06.2017, 17:15
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Лучше предложи свой вариант, чем троллить.
А я и предложил: по ссылке до 10 разных вариантов для сравнения.
Только для дурачков, которые по ссылке посмотреть не способны, оно не подходит, к сожалению...
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
08.06.2017, 12:39
 Комментарий модератора 
Olej, Запрещено публиковать ответы на вопросы или решения задач с форума на другие сайты и давать на них ссылки в качестве ответа.

В крайнем случае - выкладывайте код, оставляя ссылку как первоисточник.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37923 / 20989 / 4298
Регистрация: 12.02.2012
Сообщений: 34,536
Записей в блоге: 14
08.06.2017, 15:40
Не понятно, при чем здесь файл? Или нужно сортировать вставками файл, а не массив? Тогда - другое дело.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37923 / 20989 / 4298
Регистрация: 12.02.2012
Сообщений: 34,536
Записей в блоге: 14
08.06.2017, 17:45
Вот сортировка выбором прямо в дисковом файле:

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
#include <stdio.h>
#include <stdlib.h>
 
int GetInt(FILE *f, int p)
{
    int r;
    fseek(f,(p*4),SEEK_SET);
    fread(&r,sizeof(r),1,f);
    return r;
}    
 
void PutInt(FILE *f, int p, int v)
{
    fseek(f,(p*4),SEEK_SET);
    fwrite(&v,sizeof(v),1,f);
}    
 
int iSort(char *fname, int N)
{
  FILE *f;   
  int i,j,x,y,k;
  
  f=fopen(fname,"rb+");
  if (f==NULL) return 1;
  
  for (i=1; i<N; i++)
  {
      x=GetInt(f,i); 
      
      for (j=i-1; j>=0; j--)
      {
          y=GetInt(f,j);
          
          if (x<y)
          {
             PutInt(f,(j+1),y);
             k=j;
          }   
          else
          {
             k=j+1;
             break;
          }
                 
      }
      
      if (k>=0) PutInt(f,k,x);
      
      
  }
  
  fclose(f); 
  return 0;
  
} 
 
void PrintFile(char *fname)
{
     FILE *f;
     int i,r,fsize;
     
     f=fopen(fname,"r");
     if (f==NULL) return;
          
     fseek(f,0,SEEK_END);
     fsize=ftell(f);
     
     i=0;
     
     while (1)
     {
        if (i*4>=fsize) break;
           
        r=GetInt(f,i);
        printf("%d ",r);
        
        i++;
        
     }       
     fclose(f);
     printf("\n\n");
}     
 
int main(int argc, char *argv[])
{
 
  FILE *f;
  char *fname="f.dat";
  int A[10]={3,-7,12,1,3,3,6,7,98,-55};
  int i;
  
  f=fopen(fname,"w");
  if (f==NULL) return 1;
  
  for (i=0; i<10; i++) PutInt(f,i,A[i]);
  
  fclose(f);
  
  PrintFile(fname);
  
  iSort(fname,10);
  
  PrintFile(fname);
  
  system("PAUSE");  
  return 0;
}
Миниатюры
Сортировка вставками (не работает)  
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37923 / 20989 / 4298
Регистрация: 12.02.2012
Сообщений: 34,536
Записей в блоге: 14
08.06.2017, 19:22
Извините, не выбором, а именно вставками.
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
09.06.2017, 00:53
Цитата Сообщение от MrGluck Посмотреть сообщение
В крайнем случае - выкладывайте код, оставляя ссылку как первоисточник.
Т.е. вы считаете, что 5 страниц текста с разъяснениями будут самыми уместным?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.06.2017, 08:29
Цитата Сообщение от Olej Посмотреть сообщение
Т.е. вы считаете, что 5 страниц текста с разъяснениями будут самыми уместным?
Я считаю, что для сортировки вставками хватит и меньшего количества текста, как минимум для объяснения сути.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2017, 08:29
Помогаю со студенческими работами здесь

Сортировка вставками
Можете подробно обьяснить программу??? void sort (int *mas, int kol){ int i,j,ii,x; for(i=1;i&lt;kol;i++){ x=mas; ...

Сортировка вставками
Как отсортировать элементы стоящие на нечетных местах в порядке возрастания? вот что-то пытался делать, но не работает) int i, j, t; ...

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

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

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


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

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

Новые блоги и статьи
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru