[C#] Arrays - 7 задача


0
7.Sorting an array means to arrange its elements in increasing order. Write a program to sort an array. Use the "selection sort" algorithm: Find the smallest element, move it at the first position, find the smallest from the rest, move it at the second position, etc.



Отговори



0

от ivaylo.kenov (30760 точки)


0
Мисля, че темите с определени алгоритми ще се напълнят с почти еднакви решения, но все пак ще са полезни :)
https://github.com/martinivanovit/SimpleProjects/blob/master/SelectionSortAlgorithm

от Mahata231 (1351 точки)


0
Така е ще се напълнят ;), може да се промени някой if, но алгоритъма (идеята) си остава една и съща. http://pastebin.com/XadRrVfh


0
Здравей, погледнах алгоритъма, който си написал и мисля че прекалено много операции си направил за да сортираш масива. Ето тук ако искаш виж моя алгоритъм, където съм използвал само 2 вложени for-a :): http://pastebin.com/rc0S67LC

от Plamen.Minkov (216 точки)



1

Ето и мойто :)

http://pastebin.com/SwM0mGwV


от ScorpS (1542 точки)


0

Решение:

http://pastebin.com/zpkfCXy9

Обяснение:

Първия сортиращ алгоритъм с който се сблъскваме, един от най-лесните, но и един от най-неефективните. Основанта логика тук е:

Първия сортиращ алгоритъм с който се сблъскваме, един от най-лесните, но и един от най-неефективните. Основанта логика тук е:

Първия и обикаля по всички елементи на цикъла, а втория обикаля всички елементи, започвайки от позицията на брояча на първия цикъл + 1, като с него търсим най-малкия елемент и записваме индекса му в отделна променлива. След като сме намерили най-малкия елемент с помощта на 2рия цикъл правим размяна на елемента с индекс брояча на първия цикъл и най-малкия елемент ( индекса му записахме в отделна променлива.

Накрая отпечатваме сортирания масив.

Допълнителна информация:

  1. Визуализация на търсещите алгоритми
  2. Статия във Wikipedia

Благодарности на vlad0 за намерената грешка!


от Teodor92 (13062 точки)


0
Колега това не ми изглежда точно като Selection Sort. Може и аз да бъркам, така че да дискутираме :) Идеята е във вътрешния цикъл да се намери най-малкото число и чак тогава да им swap-нем местата. По начина, който си го направил правиш твърде много излишни swap-ове. Например имаме следния Array {4,6,2,1}, при това положение Сравняваме: 4>6 - НЕ 4>2 - Да - Swap(4,2) съответно Array вече е {2,6,4,1} 2>1 - Да - Swap(2,1) съответно Array вече е {1,6,4,2} Според мен Swap-а трябва да се прави след като намерим най-малкото с вътрешния цикъл така има доста по-малко въртене в цикъла.

от vlad0 (6103 точки)

0
Напълно сте прав колега, голяма простотия съм написал за selection sort - a ! :D Поправих кода, след секунда ще поправя и обяснението.

от Teodor92 (13062 точки)



0

http://pastebin.com/Pvfb1MvH

Страхотно обяснение на решението е дадено в условието. Това е най лесният сортиращ алгоритъм.

Опитвам се да уча нови неща и да правя решенията си с тях. Ще се опитвам също така и да добавям различни решения от предишните, за да няма дублиране.

Макар че не е по-кратко или по-разбираемо, аз използвам разширяващ метод(extention method). 

Цитат от книгата: "...дават ни възможност да добавяме функционалност към съществуващ тип (клас или интерфейс), без да променяме оригиналния му код и дори без наследяване, т.е. работи също и с типове, които не подлежат на наследяване."

http://www.introprogramming.info/intro-csharp-book/read-online/glava22-lambda-izrazi-i-linq-zaqvki/


от kirov (4821 точки)


0
Колега погледни ми коментара под на Куртев answer-a :)

от vlad0 (6103 точки)

0
Промених го. Мисля, че така е по-добре. :) Благодаря.

от kirov (4821 точки)



0
http://pastebin.com/R5vcGMUp

от B.Jivkov (350 точки)


1

Ето едно решение и от мен:

http://pastebin.com/JRYEiTem


от sabrie_n (625 точки)


1
Ето едно решение без допълнителна променлива в bitwise стил :) http://pastebin.com/Umbdm2b1



0
http://pastebin.com/qtujstkG



3

Колеги здравейте. Не ми харесват решенията предложени до момента тъй като всички са приели, че ства дума за масив от числа, а в условието на задачата никъде не cе споменава нещо подобно. За целта се използват generic types.

Метода за сортиране може да изглежда така :   static T[] SelectionSort<T>(T[] array)

Ето и моето решение.


от ivivanov (903 точки)