Bubble sort
някой има ли готово решение на задачата bubble sort за сравнение от вчерашната лекция:)
някой има ли готово решение на задачата bubble sort за сравнение от вчерашната лекция:)
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];
}
}
}
В случай че се интересуваш от битови операции.
Както Filkolev е казал - приемам, че масивът не е сортиран. По повод битовите операции - аз лично си харесвам старомодния начин за размяна на променливи, с допълнителна променлива. Другите варианти може да са хитри, но по този начин според мен кода е най-четим. Използвам ref (C# Reference) .
Използването на ref е доста добро хрумване! Ще го ползвам! Благодаря!
Въсщност използването на ref e непрепоръчително. По-добре да се избягва.
http://pastebin.com/Rp796XzH
Това е моя вариант с два цикъла for. :)
Доста интересен подход в началото на метод, който трябва да сортира (по презумпция несортиран) масив, да се сложи bool areSorted = true :)
От логическа гледна точка не е правилно; например при смяна на два елемента задаваш false, но след именно тази смяна може вече масивът да е сортиран. Тук подходът по-скоро трябва да е обратен - да се приеме, че масивът не е сортиран, докато не се премине цяла итерация, при която не е извършена нито една размяна на елементи. Ако това се случи, сме сигурни, че сортирането е приключило.