HiveBrain v1.2.0
Get Started
← Back to all entries
snippetcsharpMinor

Bubble sort in C#

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
sortbubblestackoverflow

Problem

How can I make this better?

public int BubbleSortNonEfficient(int[] arr) {
            int temp = 0;
            int LoopCount = 0;
            for(int write = 0; write  arr[sort + 1]) {
                        temp = arr[sort + 1];
                        arr[sort + 1] = arr[sort];
                        arr[sort] = temp;
                    }
                }
            }
            return LoopCount;
        }

Solution

Your implementation will run in quadratic time in all cases. You can optimize here a bit:

public static int BubbleSort(int[] arr) {
    int loopCount = 0;

    for (int i = 1; i  arr[j + 1]) {
                swapped = true;
                int temp = arr [j];
                arr [j] = arr[j + 1];
                arr [j + 1] = temp;
            }
        }

        if (!swapped) {
            break;
        }
    }

    return loopCount;
}


The above alternative will run faster whenever the input array is "presorted," i.e., exhibits a lot of order.

Declaring the sort as static will allow the user to use your sort without actually instantiating the class it belongs to.

Last but not least: you can declare temp in the body of the inner loop, since it affects nothing.

Code Snippets

public static int BubbleSort(int[] arr) {
    int loopCount = 0;

    for (int i = 1; i < arr.Length; ++i) {
        bool swapped = false;

        for (int j = 0; j < arr.Length - i; ++j) {
            loopCount++;

            if (arr[j] > arr[j + 1]) {
                swapped = true;
                int temp = arr [j];
                arr [j] = arr[j + 1];
                arr [j + 1] = temp;
            }
        }

        if (!swapped) {
            break;
        }
    }

    return loopCount;
}

Context

StackExchange Code Review Q#142720, answer score: 3

Revisions (0)

No revisions yet.