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

Сортировка Шелла - C++

Восстановить пароль Регистрация
 
saahha
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 7
04.05.2014, 18:01     Сортировка Шелла #1
объясните пожалуйста эту часть: шаг сортировки задается формулами: 2k-1, (2k-(-1)k)/3
что такое k,не думаю, что это кол-во элементов в массиве.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 18:01     Сортировка Шелла
Посмотрите здесь:

сортировка шелла C++
Сортировка Шелла C++
Сортировка Шелла C++
Сортировка Шелла C++
C++ Сортировка Шелла
C++ C++ Сортировка Шелла?
C++ Сортировка Шелла
C++ Сортировка Шелла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deadlinishe
 Аватар для deadlinishe
7 / 7 / 1
Регистрация: 03.05.2014
Сообщений: 143
05.05.2014, 17:58     Сортировка Шелла #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
#include <stdio.h>
#include <conio.h>
void shellSort(int a[], int size);
int increment(int inc[], int size);
int main () {
 int j;
 int m=0;
 int in_mas[100];
 printf("\nVvedite 4islo elementov massiva: ");
 scanf("%d", &m);
 
 for(j = 0; j < m; j++) {
  printf("\nVvedite 4islо: ");
  scanf("%d", &in_mas[j]);
 }
 
 shellSort(in_mas, m);
 
 printf ("\n");
 printf ("\n");
 getch();
}
 
void shellSort(int a[], int size) {
 int inc, i, j, seq[40];
 int s;
 
 s = increment(seq, size);
 while (s >= 0) {
  
  inc = seq[s--];
 
  for (i = inc; i < size; i++) {
   int temp = a[i];
   for (j = i-inc; (j >= 0) && (a[j] > temp); j -= inc) {
    a[j+inc] = a[j];
   }
   a[j+inc] = temp;
  }
 }
 
 for(i = 0; i < size; ++i) {
     printf("%d ", a[i]);
 }
}
 
int increment(int inc[], int size) {
 int p1, p2, p3, s;
 
 p1 = p2 = p3 = 1;
 s = -1;
 do {
  if (++s % 2) {
   inc[s] = 8*p1 - 6*p2 + 1;
  }
  else {
   inc[s] = 9*p1 - 9*p3 + 1;
   p2 *= 2;
   p3 *= 2;
  }
  p1 *= 2;
 }
 while(3*inc[s] < size);  
 
 return s > 0 ? --s : 0;
 
}
Yandex
Объявления
05.05.2014, 17:58     Сортировка Шелла
Ответ Создать тему
Опции темы

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