Форум программистов, компьютерный форум CyberForum.ru

Алгоритм сортировки,ошибка! - C++

Восстановить пароль Регистрация
 
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
02.10.2012, 22:30     Алгоритм сортировки,ошибка! #1
У меня алгоритм сортировки вставками но вот только не сортирует почему то
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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <conio.h>
//#define N 1000 
 using namespace std;
void InsertSort(int mass[], int n){
int buf, i, j;
for (i = 1; i < n; i++){
      buf = mass[i];
      j = i - 1;
      while (j >= 0 && mass[j] > buf)
      {
         mass[j+1] = mass[j];
         j--;
      }
      mass[j+1] = buf;
   }}
 
int main( )
{
int mass[100],i;
    srand(time(NULL));
    for(int i=0;i<100;i++)
    {mass[i] = rand()%100;}
    cout<<"\n"<<endl;
    cout<<"\n"<<endl;
    InsertSort(mass,100);
    for(i=0;i<100;i++){
        cout<<"\n"<<mass[i];}
    getch();
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 22:30     Алгоритм сортировки,ошибка!
Посмотрите здесь:

C++ Алгоритм сортировки
Алгоритм квадратичной сортировки C++
C++ Комбинированый алгоритм сортировки
C++ Алгоритм сортировки
C++ Алгоритм сортировки Шелла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.10.2012, 22:41     Алгоритм сортировки,ошибка! #2
еще как сортирует по возрастанию. все правильно написано, проверил!
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
02.10.2012, 22:42     Алгоритм сортировки,ошибка! #3
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
template <class Item>
void exch(Item &A, Item &B)
{ 
        Item t = A; A = B; B = t; 
}
template <class Item>
void compexch (Item &A, Item &B)
{ 
        if (B < A) exch(A, B) ;
}
template <class Item>
void insertion_sort(Item a[], int L, int R)
{
        int i;
        for(i = R; i > L; i--) compexch(a[i-1], a[i]);
        for (i = L + 2; i <= R; i++)
        {
                int j = i;
                Item cur = a[j];
                while (a[j - 1] > cur)
                {
                        a[j] = a[j - 1];
                        j--;
                }
                a[j] = cur;
        }
}
реализация сортировки вставками на викиучебнике
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
02.10.2012, 22:45  [ТС]     Алгоритм сортировки,ошибка! #4
емм алгоритм то правильно написан, вот только выводит мне массив от 1 до 100 и все
а сранд не задействует вообще...
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.10.2012, 22:47     Алгоритм сортировки,ошибка! #5
еще как задействован, каждый раз новые элементы (имеются повторения) генерируются, посмотрите внимательно. измените для примера диапазон массива или диапазон случайных чисел
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
02.10.2012, 23:37  [ТС]     Алгоритм сортировки,ошибка! #6
нашла время работы а как можно посчитать кол-во сравнений или обменов???

Добавлено через 40 секунд
вот время работы
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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <conio.h>
 using namespace std;
void InsertSort(int mass[], int n){
int buf, i, j;
for (i = 1; i < n; i++){
      buf = mass[i];
      j = i - 1;
      while (j >= 0 && mass[j] > buf)
      {
         mass[j+1] = mass[j];
         j--;
      }
      mass[j+1] = buf;
   }}
 
int main( )
{
    setlocale(LC_CTYPE,"Russian");
    int mass[100],i;
    cout<<"Рандомизированый массив";
    srand(time(NULL));
    for(int i=0;i<100;i++)
    {mass[i] = rand()%100;
    cout<<"\t"<<mass[i];
    }
    clock_t t0 = clock();
    cout<<endl; 
    cout<<"Массив после сортировки"<<endl;
 
    InsertSort(mass,100);
    for(i=0;i<100;i++){
        cout<<"\t"<<mass[i];}
    clock_t t1 = clock();
    cout<<endl;
    cout << "time: " << (double)(t1 - t0) / CLOCKS_PER_SEC << endl;
    getch();
    return 0;
 
}
Добавлено через 20 минут
увидела следующие для данного алгоритма
формулы С-колво сравнений максимальных ((n-1)*n)\2.
и колво обменов Mсред=(n-1)*n)\4.
C++
1
2
3
4
5
int C_max,M_cep;
    C_max=((100-1)*100)/2;
    M_cep=((100-1)*100)/4;
    cout<<"Кол-во сравнений:"<<C_max<<endl;
    cout<<"Кол-во обменов:"<<M_cep;
то это или нет::??
Yandex
Объявления
02.10.2012, 23:37     Алгоритм сортировки,ошибка!
Ответ Создать тему
Опции темы

Текущее время: 06:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru