Loading...
felix_de_suza avatar felix_de_suza 100 Точки

[Technical Issue] Java Basics - Selection Sort - Algorithm

Колеги, пробвам се да реализирам алгоритъма и ми сортира правилно но изглежда го въртя повече пъти и след като ми ги е сортирало веднъж продължава да ми разменя елементите(това е алгоритъма както аз съм го реализирал), та въпроса ми е някои може ли да каже каква проверка да сложа да чеква кога масива е вече сортиран? 

Ето го и кода:

http://pastebin.com/Rt4iJ55t

Тагове:
1
Java Advanced 04/09/2014 22:58:38
ttitto avatar ttitto 1153 Точки

Здравей,

Едва сега имах време да погледна какво си направил, дано да съм полезен.

Променливата ти elementIndex получава нова стойност само когато последващото число е по-малко от предходното, т.е. когато влиза във втория иф. Обаче я използваш за размяна при всеки край на вътрешния фор цикъл. Оттам идва белята, когато имаш само по-големи цифри до края на масива тази променлива си остава с остаряла стойност и размяната на двете числа не е правилна. Решението е да вкараш размяната вътре в първия иф: код Но незнам дали това е най-ефективното, защото така ще правиш размяна винаги когато имаш последващо по-голямо число.

 

ПС. От къде ти е хрумнало да пишеш този алгоритъм? И ако учиш от някоя книга за алгоритми, би ли казал от коя!

1
HPetrov avatar HPetrov 822 Точки

В книгата по C# от главата за масиви имап да имплементираш 3 сортиращи алгоритъма. Най-вероятно и в книгата по Java ги има.

0
felix_de_suza avatar felix_de_suza 100 Точки

Сега като ми написа веднага ми светна крушката :) Чета въведение в програмирането с Java и това са от задачките след главата за масиви, има и "merge sort" "quick sort" а също и за двоично търсене, но ако някой знае за добра книга да каже, мисля че ще е полезно.

0
ttitto avatar ttitto 1153 Точки

Специално за алгоритми има една задължителна(според мен). Примерите в нея са на Java. Но честно казано досега не съм имал време да се занимавам с нея обстойно.

ПС. Между другото защо имам право да си отбележа собственият отговор като Best answer. Това няколко пъти вече го забелязвам и си мисля, че е някакъв бъг?

1
HPetrov avatar HPetrov 822 Точки

@ttitto

Имаш опцията но в действителност не можеш да е ползваш ако не се лъжа. Все пак няма много логика сам да е избираш като best answer ;)

@felix_de_suza

Ще ти препоръчам Алгоритми++. Според мен това е четиво, което всеки програмист трябва да е прочел.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.