Грамотно ли написан с++ код? - Вопросы по С+

Вопрос Грамотно ли написан с++ код?

Регистрация
19 Окт 2012
Сообщения
102
Репутация
0
Спасибо
0
Монет
0
можете, пожалуйста, сказать, все ли хорошо с этим кодом? может есть какие-нибудь недочеты...



#include

#include

#include



int main() {

std::srand(std::time(nullptr));





int *a=new int[1000];

int *k=new int;



for (int i = 0;i
 
Регистрация
21 Авг 2013
Сообщения
79
Репутация
1
Спасибо
0
Монет
0
форматирование хорошее, но видна рука новичка.
профи выделяют в отдельную процедуру // пузырьковая сортировка
void bubbleSort(int *a, size_t size) {
size_t i, j;
int tmp;
for (i = 1; i < size; i++) {
for (j = i; j > 0; j--) {
if (a[j] < a[j-1]) {
tmp = a[j];
a[j] = a[j-1];
a[j-1] = tmp;
}
}
}
} // end bubbleSort
 
Регистрация
1 Июн 2013
Сообщения
73
Репутация
0
Спасибо
0
Монет
0
Нет, код написан совершенно безграмотно.

Если у тебя C++, то для работы с динамическими массивами забудь про указатели и new и используй vector. А если размер массива заранее известен, то использовать динамические массивы в принципе бессмысленно.

int *a=new int[1000]; - абсолютно бессмысленная трата памяти. У тебя же массив на 100 элементов и память под лишние 900 элементов выбрасывается на ветер.

int *k=new int; - абсолютно бессмысленно. Намного эффективнее просто int k;

std::rand(); - крайне некачественный генератор псевдослучайных чисел. В стандартной библиотеке С++ есть несравнимо более лучшие варианты.

for (int i = 1,j=0;j&lt;100000;j++,i++) { ... if(i==99)i=0; } самый бредовый вариант пузырьковой сортировки, который мне встречался. Даже в наивной реализации сортировки (код λ в соседнем ответе) на 100 элементов требуется всего 4950 итераций внутреннего чикла, а у тебя 100000.

Писать *(a+i), (a+i-1) - говнокод. Варианты a, a[i - 1] ничем не отличаются (компилятор генерирует идентичный машинный код), но читаются несравнимо лучше.

Использовать запятую только для того, чтобы не писать { } - глупость. Если конструкции вида *k=*(a+i-1),*(a+i-1)=*(a+i),*(a+i)=*k; встретятся в твоём реальном коде, икаться тебе будет сильно и часто.
 
Сверху Снизу