Професионална програма
Loading...
+ Нов въпрос
krisdx avatar krisdx 66 Точки

Цък

0
15/09/2015 20:13:16
Filkolev avatar Filkolev 4486 Точки

Доста интересен подход в началото на метод, който трябва да сортира (по презумпция несортиран) масив, да се сложи bool areSorted = true :)

От логическа гледна точка не е правилно; например при смяна на два елемента задаваш false, но след именно тази смяна може вече масивът да е сортиран. Тук подходът по-скоро трябва да е обратен - да се приеме, че масивът не е сортиран, докато не се премине цяла итерация, при която не е извършена нито една размяна на елементи. Ако това се случи, сме сигурни, че сортирането е приключило.

2
RFilipov avatar RFilipov 136 Точки
for (int i = 0; i < inputLength; i++)
            {
                for (int j = 0; j < inputLength - 1; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        array[j] ^= array[j + 1];
                        array[j + 1] ^= array[j];
                        array[j] ^= array[j + 1];
                    }
                }
            }

В случай че се интересуваш от битови операции.

5
Rextor92 avatar Rextor92 149 Точки

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

Както Filkolev е казал - приемам, че масивът не е сортиран. По повод битовите операции - аз лично си харесвам старомодния начин за размяна на променливи, с допълнителна променлива. Другите варианти може да са хитри, но по този начин според мен кода е най-четим. Използвам ref (C# Reference) .

2
15/09/2015 22:45:05
dodoff avatar dodoff 55 Точки

Използването на ref е доста добро хрумване! Ще го ползвам! Благодаря!

1
DiyanTonchev92 avatar DiyanTonchev92 233 Точки

Въсщност използването на ref e непрепоръчително. По-добре да се избягва. 

0
Rextor92 avatar Rextor92 149 Точки
Би ли се аргументирал, може да пропускам нещо?

Според мен ref трябва да се използва относително рядко; но не е непрепоръчителен. В основата си ref и out са просто начини да получиш допълнителни стойности след края на изпълнението на метод и трябва да бъде избягвано - вероятно метода се опитва да свърши твърде много. Естествено това не винаги е вярно : TryParse е пример за разумно използване на out. Използване на ref в някой по-сложен метод или, не дай си боже, nested ref, би било объркващо. Swap метод, разменящ стойностите на две променливи ( особено такъв, който използвам в 2 задачи в домашното - BubbleSort и SelectionSort сортирането :) ), определено не е объркващ.

 
1
gamereaktor2118 avatar gamereaktor2118 3 Точки

http://pastebin.com/Rp796XzH

 

Това е моя вариант с два цикъла for. :)

1