- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include <iostream>
#include <conio.h>
using namespace std;
void iswap(int &n1, int &n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
int main()
{
int const n = 100;
int a[n];
for ( int i = 0; i < n; ++i ) { a[i] = n - i; cout << a[i] << " "; }
//заполняем массив для наглядности.
//-----------сортировка------------//
//сортирует по-возрастанию. чтобы настроить по-убыванию,
//поменяйте знаки сравнения в строчках, помеченных /*(знак)*/
int sh = 0; //смещение
bool b = false;
for(;;)
{
b = false;
for ( int i = 0; i < n; i++ )
{
if( i * 2 + 2 + sh < n )
{
if( ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
{
if ( a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh] )
{
iswap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
else if ( a[i * 2 + 2 + sh] < /*>*/ a[ i * 2 + 1 + sh])
{
iswap( a[ i + sh], a[i * 2 + 2 + sh]);
b = true;
}
}
}
else if( i * 2 + 1 + sh < n )
{
if( a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
{
iswap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
}
}
if (!b) sh++; //смещение увеличивается, когда на текущем этапе
//сортировать больше нечего
if ( sh + 2 == n ) break;
} //конец сортировки
cout << endl << endl;
for ( int i = 0; i < n; ++i ) cout << a[i] << " ";
_getch();
return 0;
}
Запостил как-то на вики как более короткая реализация с++, более понятная и главное - рабочая. Не признали. Сам смотрю - не понимаю че там написано )))
idec 23.06.2012 17:58 # 0
guest 23.06.2012 18:01 # +5
Респект
TarasB 23.06.2012 18:13 # +4
мешанина символов, равномерно и с низкой плотностью заполняющая экран
TheHamstertamer 23.06.2012 20:21 # +4
idec 24.06.2012 12:43 # +2
defecate-plusplus 23.06.2012 20:29 # +3
затем, собственную iswap было не западло реализовать, а std::swap, значит, полная хрень?
HaskellGovno 23.06.2012 20:44 # +1
iSwap очень рекламировался Стивом Джобсом
Видно же, что это лаба. А на лабах std::sort_heap, std::swap и прочие стандартные алгоритмы могут быть запрещены.
idec 24.06.2012 12:42 # 0
movaxbx 23.06.2012 21:08 # +3
Жуть.
vistefan 23.06.2012 23:33 # 0
TarasB 23.06.2012 23:42 # +2
govnomonad 24.06.2012 18:01 # +5
HaskellGovno 24.06.2012 00:49 # 0
idec 24.06.2012 12:40 # 0
wvxvw 24.06.2012 13:31 # +3
rat4 24.06.2012 16:57 # 0
wvxvw 24.06.2012 18:58 # 0
bormand 24.06.2012 19:03 # 0
Эм, так там и mc с его mcedit должны отлично работать... И vi с vim'ом...
wvxvw 24.06.2012 19:14 # 0
bormand 24.06.2012 19:24 # +1
Хм. Последний раз когда я такое видел - когда заходил через последовательный порт ;) А в консолях - всегда было все цветное, ну разве что русские буквы не показываются, если не настроены.
> mc не был установлен
А я вот привык к mc'шке. Даже при живых иксах пользуюсь, когда надо порыться в файлах.
А каким менеджером пользуетесь, если не секрет?
roman-kashitsyn 24.06.2012 20:02 # 0
В богомерзкой винде иногда eshell выручает
bormand 24.06.2012 20:35 # +1
Мне лень копировать и просматривать файлы через консоль, когда в mc это можно сделать быстрее и удобнее. Видимо я хомячок ;)
roman-kashitsyn 25.06.2012 09:24 # 0
eth0 24.06.2012 21:30 # +1
wvxvw 24.06.2012 23:55 # 0
без вариантов :), ну и обычно ECB открыт, в нем тоже можно. Единственное, что напрядает - в dired нету быстрого архивирования / разархивирования (только по одному файлу), и я каждый раз как сталкиваюсь с тем, что опций архиваторов не помню срочно берусь доделывать, но что-то меня останавливает...
Если эмакса нету, или чужой компутер, на котором эмакс не похож на мой... даже не знаю, наверное использовал бы графический проводник / консоль, по обстоятельствам. Но даже не знаю, давно не случалось.
rat4 24.06.2012 20:39 # 0
bormand 24.06.2012 21:32 # 0
defecate-plusplus 24.06.2012 17:31 # +1
стоит отметить что из-за него таб стал в этом месте 5 позиций, смещая все остальное внутри себя (ср отступ в строках 35 и 49)
TarasB 24.06.2012 17:35 # +1
defecate-plusplus 24.06.2012 17:47 # +4
а не то, что ты подумал
idec 25.06.2012 06:40 # 0
элз иф писал так сам для минимизации этого говна хотя бы на 2 строчки )
bormand 25.06.2012 06:42 # 0
P.S. Если уж хочется минимизации - можно было воспользоваться стилем K&R.
idec 25.06.2012 07:04 # 0
bormand 25.06.2012 07:10 # 0
Предложение было только про уменьшение отступа на 5 пробелов в строках 39-42 и 46-52...
> это ж в стиле кнута только без goto
Кнут смотрит на вас с грустью в глазах.
idec 25.06.2012 08:29 # 0
bormand 25.06.2012 09:07 # 0
поменять на это (как пишут все)
idec 25.06.2012 12:13 # 0
idec 25.06.2012 12:22 # 0
else
if (...)
{
}
bormand 25.06.2012 12:30 # 0
idec 25.06.2012 12:32 # 0
idec 25.06.2012 12:36 # 0
bormand 25.06.2012 12:49 # 0
А зачем вы ее используете? Если уж быть одептом - то до конца.
bormand 25.06.2012 12:43 # +1
Как говорится "Tits or GTFO".
idec 25.06.2012 12:46 # −1
bormand 25.06.2012 12:52 # +1
idec 25.06.2012 12:54 # 0
вот. обратите внимание, что отступ есть даже если скобки не ставятся.
http://imageshack.us/photo/my-images/171/bscf.jpg/
idec 25.06.2012 12:59 # 0
case 1: if
(таб){
(2 таба)
(таб)}
чтобы было понятно что код в скобках принадлежит только if
bormand 25.06.2012 13:06 # 0
bormand 25.06.2012 13:01 # 0
idec 25.06.2012 13:12 # 0
else
(tab) if
(tab){
(2tab)//code
(tab)}
так делают все парсеры. напишите else, нажмите enter - каретка перебросится на другую строку + табуляция.
еще вариант елз иф если внутри елза не одна операция а несколько:
else
{
(tab)if
(tab){
(2tab) //code
(tab)}
(tab)if
(tab){
(2tab) //code
(tab)}
}
намереваюсь закончить дискуссию т.к изза смещения комментов вправо мой экран 1024*768 сплющивает текст до нечитабельности.
bormand 25.06.2012 13:21 # +1
Правильно делают. Но в то же время если я напишу else if, то они выровняют следующую скобку не по if а по else.
Против второго варианта, где много кода в ветке else ничего не имею.
А по первому - ну приведите хотя бы один пруф, где применено такое форматирование сочетания else и if как здесь, или как в коде который приведен в начале треда. Книгу, ссылку, опенсурс проект, да что угодно...
TarasB 25.06.2012 13:24 # +1
}
defecate-plusplus 25.06.2012 13:27 # +1
bormand 25.06.2012 13:31 # +1
K&R ;)
defecate-plusplus 25.06.2012 13:49 # +3
bormand 25.06.2012 13:51 # 0
eth0 25.06.2012 14:00 # +2
Я уже как-то писал про свои отступы, обругали. Одни ценители кругом. ^^
bormand 25.06.2012 14:56 # 0