Софтуерно Инженерство
Loading...
+ Нов въпрос
hwfbcisod avatar hwfbcisod 80 Точки

Sorting an array.

Ситуацията е следната: Решавам задача 8, глава 7-ма от книгата Intro to C#. Идеята е да се прочете масив от конзолата, след което да се подредят елементите му във възходящ ред. Измислил съм алгоритъм, чрез който да я реша и той работи, с едно единствено изключение. Когато в масива дадено число се повтаря, то бива изядено(не мога да го отпечатя). Ще се радвам, ако някой ми даде насоки за справянето с този проблем!


http://pastebin.com/NS2ZcAcg

 

Поздрави!

 

P.S. Интересува ме решение на проблема, което може да бъде имплементирано в моя код. Не търся готов алгоритъм.

0
Основи на програмирането 01/07/2016 21:59:21
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

http://visualgo.net/sorting - този линк ще ти е полезен. Има доста алгоритми, които са визуализирани, а също така е представен и псевдо код. Избери си горе "SELECT", за да ти визуализира твоя алгоритъм. Може да ти помогне и за други задачи.

Относно твоята имплементация на сортинг алгоритъма - не мисля че си схванал идеята на Selection sort. Погледни линка и опитай да я имплементираш така. Все пак е изискване към условието. 

 

Поздрави!

1
01/07/2016 22:12:34
hwfbcisod avatar hwfbcisod 80 Точки

Благодаря за отговора, ще прегледам линка, който си постнал. Идеята на поста ми обаче беше друга  - да разбера дали този алгоритъм, който написах може да бъде подкаран и да започне да работа. Това бе и причината да пусна поста преди да започна да ровя в нета :)

Поздрави!

0
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Така формуирано, като си запазваш най - малката стойност до момента в eliminate, ако я повториш тя няма да бъде отчетена.

Не виждам начин да сработи. Ако някой колега може да ти оправи алгоритъма, ще се радвам да видя как (подчертават твоя алгоритъм, не да го променя :Д)

 

Поздрави!

1
hwfbcisod avatar hwfbcisod 80 Точки

Ами според нещата, които разглеждах до сега се оказваш прав, че това решение няма фикс или поне не в този му вид. Явно ще трябва да се примиря с използването на друг, по-практичен вариант. Благодаря!

0
01/07/2016 23:00:45
Filkolev avatar Filkolev 4502 Точки

Няма как да стане, всеки път опитваш да намериш най-малкото число, което не си сортирал, но нямаш яснота колко пъти се среща то. Алгоритъмът ти работи ако колекцията няма повторения, но няма лесна промяна, за да проработи и с повторения.

Съветът ми е - на лист хартия си направи някакъв масив с не много елементи (включително и повтарящи се) и опитай да измислиш как да го сортираш.

1
KrasimirPetkov avatar KrasimirPetkov 331 Точки

Здравей,

Можеш да опиташ следното, което според мен най-много се доближава до посоката, в която си тръгнал с решението си: http://pastebin.com/CseuMkp2

Тук се елиминира проблемът с повтарящите се елементи, тъй като масивът условно се разделя на "сортирана" и "несортирана" част, а търсенето се извършва само в "несортираната" част, откъдето се взима елементът с най-малка стойност. Въвеждането на масива става на един ред. Ако искаш можеш да го промениш с for-цикъл, като в твоето решение. Надявам се да разбереш коментарите, които съм добавил.

Успех със задачите!

1
svetljo avatar svetljo 27 Точки

Здравей,

леко преправих твоя алгоритъм, в случай, че все пак искаш да ползваш него: (има коментари в кода)

http://pastebin.com/YxrdUGs3

1
02/07/2016 12:57:04
svetljo avatar svetljo 27 Точки

Накрая можеш да принтираш елементите със Console.WriteLine(string.Join(", ", sorted));

1
hwfbcisod avatar hwfbcisod 80 Точки

Благодаря за съдействието и насоките, пренаписах задачата и успях да се справя!

0