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

Выполнить сортировку одномерного массива X(100) методом Шелла - C++

Восстановить пароль Регистрация
 
Brunetka28rus
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 2
27.05.2013, 03:30     Выполнить сортировку одномерного массива X(100) методом Шелла #1
задание: Выполнить сортировку одномерного массива X(100) методом Шелла. В отсортированном одномерном массиве X(100)выполнить поиск заданного элемента методом бинарного поиска.

Вот программа:

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
#include <iostream.h>
 
int main()
 
{   Float x[100] ={5, 9, 45, 82, 46, 13, 55, 95, 342, 3, 2, 4, 78, 62, 93, 85, 53, 66, 64, 36, 869, 6, 26, 698, 256, 49, 854, 985, 658, 951, 236, 569, 24, 63, 1, 45, 802, 87, 852, 854, 223, 88, 55, 22, 11, 44, 66, 99, 83, 77, 46, 41, 29, 19, 72, 30, 10, 90, 77, 38, 741, 642, 258, 661, 313, 847, 444, 666, 50, 20, 60, 40, 70, 655, 558, 153, 139, 108, 101, 909, 674, 479, 704, 407, 389, 660, 401, 301, 109, 100, 300, 200, 250,750, 448, 226, 542, 851, 894, 565};
int i,step,size,y;
 
    for (i=0; i<100; i++);
   cout << "vvedite razmer massiva" << endl;
    cin>>x[i];
     
     size=100;
 
step=size/2;
 
    while (step>0)
    {
      for (i=0; i<(size-step); i++)
               
 
               {
               while (i>=0 && x[i]>x[i+step])
                    
                       {
                        y=x[i];
                        x[i]=x[i+step];
                        x[i+step]=y;
                        i--; 
                       }
               }
                step=step/2;
     }    
 
    for (i=0; i<size; i++)
    {
        cout<<x[i]<<endl;
    }
    
    int mid_index=0,
        first_index=0, 
        last_index=size-1, 
        index;
        
      {  
            for (i=0; i<size; i++);
             cout << "vvedite element dlya poiska" << endl;
             cin>>index;
    
    
                while (first_index<last_index)
    {
        mid_index=first_index+(last_index-first_index) / 2;
      
        index <= x[mid_index] ? last_index = mid_index : first_index = mid_index + 1;    
    }
    if ( x[last_index] == index)
        cout << "index = " << last_index << endl;
    else
        cout << "element ne naiden" << endl;
}
 
    system("PAUSE");
    return 0;
}

Выдает 4 ошибки.. ничего не могу поделать(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 03:30     Выполнить сортировку одномерного массива X(100) методом Шелла
Посмотрите здесь:

Выполнить сортировку целочисленного массива C++
C++ Сортировка массива методом Шелла
Выполнить сортировку одномерного массива X(100) методом Шейкера. C++
C++ Выполнить сортировку одномерного массива X(100) методом вычисления адреса
C++ Выполнить сортировку одномерного массива X(100) методом бинарных вставок
C++ Выполнить сортировку одномерного массива методом вставки в список с вычислением адреса
Сортировка двумерного массива Методом Шелла (по убыванию) C++
C++ Выполнить сортировку массива в заданном порядке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
27.05.2013, 06:48     Выполнить сортировку одномерного массива X(100) методом Шелла #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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define N 100
 
void swap(int& n1, int& n2);
int search(int* A, int i, int j, int val);
 
int main(int argc, char* argv[])
{
    int A[N] = { 3, 5, 8, 1, 4, 6, 7, 5, 1, 3 };
 
    int j = 0, n = N-1;
    while (j < N) A[j++] = n--;
 
    for (int x1 = 0; x1 < N; x1++)
        printf("%d ",A[x1]);
 
    printf("\n\n");
 
    for (int r = N-1; r >= 0; r--)
        for (int i = 0; i + r < N; i++)
            if (A[i] > A[i+r]) swap(A[i],A[i+r]);
 
    for (int x2 = 0; x2 < N; x2++)
        printf("%d ",A[x2]);
 
    printf("\n\n");
 
    int val = 0;
    printf("Enter a value:"); scanf("%d",&val);
    printf("A[%d] = %d\n",search(A,0,N-1,val), val);
 
    _getch();
 
    return 0;
}
 
int search(int* A, int i, int j, int val)
{
    int m = (i + j) / 2;
 
    if (A[m] == val) return m;
    if (val < A[m]) return search(A, i, m, val);
    if (val > A[m]) return search(A, m, j, val);
    
    return -1;
}
 
void swap(int& n1, int& n2)
 { int _tn = n1; n1 = n2; n2 = _tn; }
Yandex
Объявления
27.05.2013, 06:48     Выполнить сортировку одномерного массива X(100) методом Шелла
Ответ Создать тему
Опции темы

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