snippetcsharpMinor
Bubble sort in C#
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:
The above alternative will run faster whenever the input array is "presorted," i.e., exhibits a lot of order.
Declaring the sort as
Last but not least: you can declare
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.