Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2012, 15:36   #11
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от rlib Посмотреть сообщение
Оптимизация всегда усложняет алгоритм
Ой-ли?
Мне кажется, что данный случай - как раз яркий пример, опровергающий это высказывание. В данном конкретном случае "оптимизация кода" упростит алгоритм, т.к. избавит от проведения ненужной сортировки.

Я не призываю оптимизировать любой ценой. И даже не призываю всегда применять алгоритмы наименьшей сложности, например, когда длина сортируемого массива менее 20, пузырек выполнит сортировку быстрее, чем алгоритм Хоара. Но когда простота сочетается с эффективностью, грех не воспользоваться этим обстоятельством.
s-andriano вне форума Ответить с цитированием
Старый 10.06.2012, 15:54   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
решение через сортировку достаточно просто...Используем код сортировки. Он прост и отработан. Готовый код сортировки легко найти и использовать.
Давайте не будем смешивать в одну кучу "написать самому" и "воспользоваться библиотекой, где есть подходящая функция".
Второй вариант, конечно, становится все более и более популярным, вплоть до того, что нередко начинающие программисты считают, что написать программу - это найти максимально подходящий исходник и сделать в нем косметические изменения.
Но вряд ли это то, чему следует учиться студенту.
s-andriano вне форума Ответить с цитированием
Старый 11.06.2012, 00:28   #13
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Ой-ли?
Мне кажется, что данный случай - как раз яркий пример, опровергающий это высказывание. В данном конкретном случае "оптимизация кода" упростит алгоритм, т.к. избавит от проведения ненужной сортировки.
Куда уж проще этого?
Код:
void bubbleSort(int arr[], int size) {	
	bool swapped;
	do {
		swapped = false;
		for (int i=1; i<size; ++i) {
			if (arr[i-1] > arr[i]) {				
				swap(arr[i], arr[i-1]);				
				swapped = true;
			}
		}
	} while (swapped);
}
На асме:

Код:
.DATA
arr			DD		15,4,2,9,7,8,11,1,3,6
arrSize		EQU		10
TRUE		EQU	1
FALSE		EQU	0

.CODE
buble 		PROC		

L1:	mov edx, FALSE 							; bool swapped = FALSE
	mov ebx, TYPE arr 						; int i = 1;
	mov ecx, arrSize 						; for (i=1; i<arrSize; ++i)	{
L2:	mov eax, DWORD PTR arr[ebx-TYPE arr] 
	cmp eax, DWORD PTR arr[ebx]	 	
	js L3									; if (arr[i-1] < arr[i]) continue;
	push DWORD PTR arr[ebx]					; swap(
	mov DWORD PTR arr[ebx], eax
	pop eax
	mov DWORD PTR arr[ebx-TYPE arr], eax 	; 		)
	mov edx, TRUE 							; swapped = true;
L3:	add ebx, TYPE arr
	loop L2 								; }
	cmp edx, TRUE 
	je 	L1	
	ret
buble		ENDP
А теперь реализуйте с 6-ю переменными (регистров даже не хватает!) и не запутайтесь в коротких переходах

Последний раз редактировалось rlib; 11.06.2012 в 00:33.
rlib вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
asm? Tymchuk C++ Builder 1 18.05.2012 21:29
Передача параметров asm-asm Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.12.2011 11:54
asm dosha Фриланс 2 04.03.2011 01:59
Asm в С++ ge4r Помощь студентам 0 17.10.2010 17:26
с++ и ASM breate Общие вопросы C/C++ 4 04.11.2009 20:56