Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 0
Регистрация: 10.01.2014
Сообщений: 94
1

Сортировка методом выбора и методом пузырьков

25.03.2015, 18:49. Показов 1171. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане).
Я не спец в программировании, сразу говорю). Нам с другом дали задание сравнить эти 2 сортировке ( в теме написаны какие ), ну и узнать кол-во перестановок и сравнений, ну и длительность узнать.
В ходе " Решения " задачи, мы пришли к вот этому коду ...
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// Laba3.cpp: определяет точку входа для консольного приложения.
//
 
 
 
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <windows.h>
 
clock_t start,end;
long comp,repl;
unsigned int a[4000],t[4000];
int shell[4]={8,4,2,1};
int n;
//подпрограмма перестановки элементов массива
   void swap(int i2, int i1)
   {
      int t;
       {
  t=a[i1],a[i1]=a[i2],a[i2]=t;
  //Sleep();
 }
   }
 
// Сортировка пузырьков
void sort1()
{
int l;int r;int b;
    int i,j;
    for(j=0;j<n-1;j++)
    for(i=n-1;i>j;i--)
      {comp++;
       if(a[i-1]>a[i])
       {
        repl++;
        repl++;
        repl++;
        swap(i,i-1);
       }
       }
}
//подпрограмма перестановки
void sort(int n)
{
    for(int i=0;i<n-1;i++)
    {
        int k=i;
        for(int j=i+1;j<n;j++,comp++)
        if(t[k]>t[j]) k=j;
        if (k!=i)
        {
            int r=t[k];
            t[k]=t[i];
            t[i]=r;
            repl++;
            repl++;
            repl++;
            //Sleep();
        }
    }
}
//сортировка выбором
void sort2 (int *x, int n)
{
    int i, j, k, exchange;
    int temp;
    for (i=0; i<n-1; i++)
    {   exchange=0;     //нет перестановок
        k=i;                //номер наименьшего
        temp=x[i];      //значение наименьшего
        for (j=i+1;j<n;j++)
            if (x[j] < temp)
            {
                    k=j; temp=x[j];//номер и значение наименьшего среди 
                    exchange=1;     //перестановка нужна
                }
 
            if (exchange)
            {
                x[k]=x[i]; x[i]=temp;
            }
        }
}
 
 
void main (void)
{
    srand(time(0));
    n=1000;
    FILE *in,*out1,*out2;
    //if ((in=fopen("in.txt","r"))==NULL) return;
    if ((out1=fopen("out1.txt","w"))==NULL) return;
    if ((out2=fopen("out2.txt","w"))==NULL) return;
 
    int i=0,r=0;
    /*while(1)
    {
            if (feof(in)) break;
            fscanf(in,"%d",&a[n]);
            if(a[n]>i) i=a [n];
            n++;
    }
    n--;
    while(i) r++,i=i>>1; */
        /*start=clock();
        sort1();
        end=clock();*/
for(i=0; i<n; i++)
a[i]=rand()%1000 +1;
LARGE_INTEGER _start; 
LARGE_INTEGER _freg; 
LARGE_INTEGER _end;
QueryPerformanceFrequency(&_end);
QueryPerformanceCounter(&_start);
sort1 ();
QueryPerformanceCounter(&_freg);
 
    for(i=0;i<n;i++)
    fprintf(out1,"%d\n",a[i]);
    fprintf(out1,"Сортировка пузырьков\n");
    fprintf(out1,"Compares: %ld\nSwitches: %ld\n",comp,repl);
    fprintf(out1,"Time: %f",(double)(_freg.QuadPart - _start.QuadPart)/_end.QuadPart);//(end-start)/CLK_TCK);
    fclose(out1);
 
    n=1000,comp=0,repl=0;
for(i=0; i<n; i++)
a[i]=rand()%1000 +1;
    /*fseek(in,0,0);
    while(1)
    {
        if (feof(in)) break;
        fscanf(in,"%d",&a[n]);
        n++;
    }
    n--;
    fclose(in);
*/
    /*start=clock();
    sort2();
    end=clock(); */
QueryPerformanceFrequency(&_end);
QueryPerformanceCounter(&_start);
sort2 ();
QueryPerformanceCounter(&_freg);
    for(i=0;i<n;i++)
    fprintf(out2,"%d\n",a[i]);
    fprintf(out2,"Сортировка Выбором\n");
    fprintf(out2,"Compares: %ld\nSwitches: %ld\n",comp,repl);
    fprintf(out2,"Time: %.9f",(double)(_freg.QuadPart - _start.QuadPart)/_end.QuadPart);//(end-start)/CLK_TCK);
    fclose(out2);
}
В результате, он выдал одну ошибку, "error C2660: sort2: функция не принимает 0 аргументов". В строке sort2();.
Подскажите пожалуйста в чем дело, и что нужно исправить?) Благодарю за внимание.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2015, 18:49
Ответы с готовыми решениями:

Сортировка методом выбора в C++
Сортировать численные значения по значению абсолютной величины методом выбора в C++ Где ошибка? ...

Сортировка методом выбора
Выполните сортировку вещественного массива методом выбора: выбирается наименьший элемент и меняется...

Сортировка методом выбора
Здравствуйте! Подскажите пожалуйста как сортировкой методом выбора посчитать количество обменов...

Сортировка методом выбора С++
не подскажите что не так в программе #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; int n=15; float...

2
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
25.03.2015, 18:53 2
Это вызов
Цитата Сообщение от RendomID Посмотреть сообщение
C++
1
sort2 ();
это объявление
Цитата Сообщение от RendomID Посмотреть сообщение
C++
1
void sort2 (int *x, int n)
разницу видите? вызов должен быть таким
C++
1
sort2(a, n);
0
4 / 4 / 0
Регистрация: 10.01.2014
Сообщений: 94
25.03.2015, 21:40  [ТС] 3
Все равно выдает ошибку.
error C2664: sort2: невозможно преобразовать параметр 1 из "unsigned int [4000]" в "int *"
В тексте программы подчеркивает букву "а". Я думал сначала подобным образом сделать, только вместо аргумента "а" подставить "х". И все равно ошибка)

Добавлено через 2 часа 42 минуты
Помогииите)
0
25.03.2015, 21:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2015, 21:40
Помогаю со студенческими работами здесь

Сортировка методом выбора
Задание: программа, сортирующая случайно сгенерированный список из 10 чисел методом выбора....

Сортировка методом выбора
Ребят помогите. нужно сортирнуть по возростанию средней оценки студентов методом выбора. #include...

Сортировка методом прямого выбора
Есть двумерный массив nxn, заполненный рандомными числами. Отсортировать его методом прямого...

Сортировка массива методом выбора
Доброго времени суток, форумчане! void sortar(int *a, int N) { int fl, i, j, temp = 0; do {...

Не работает сортировка методом выбора
Есть сортировка методом Выбора. Делал на основе программы на Паскаль. Почему-то не сортирует,...

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


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

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