Bubble
sort
Bubble
sort,
sometimes referred to as sinking sort, is a simple sorting
algorithm that repeatedly steps through the list to be sorted, compares
each pair of adjacent items and swaps them if they are in the wrong order.
The pass through the list is repeated until no swaps are needed, which
indicates that the list is sorted. The algorithm, which is a comparison
sort, is named for the way smaller elements "bubble" to the top
of the list. Although the algorithm is simple, it is too slow and impractical
for most problems even when compared to insertion
sort.[1]
It can be practical if the input is usually in sort order but may occasionally
have some out-of-order elements nearly in position.
Analysis
An example of bubble sort. Starting from the beginning of
the list, compare every adjacent pair, swap their position if they are not in
the right order (the latter one is smaller than the former one). After each iteration,
one less element (the last one) is needed to be compared until there are no
more elements left to be compared.
Performance
Bubble sort has worst-case and average complexity both О(n2), where n is the number of items being sorted. There exist many sorting algorithms with substantially better worst-case or average complexity of O(n log n). Even other О(n2) sorting algorithms, such as insertion sort, tend to have better performance than bubble sort. Therefore, bubble sort is not a practical sorting algorithm when n is large.Rabbits and turtles
The positions of the elements in bubble sort will play a large part in determining its performance. Large elements at the beginning of the list do not pose a problem, as they are quickly swapped. Small elements towards the end, however, move to the beginning extremely slowly. This has led to these types of elements being named rabbits and turtles, respectively, after the characters in Aesop's fable of The Tortoise and the Hare.Various efforts have been made to eliminate turtles to improve upon the speed of bubble sort. Cocktail sort is a bi-directional bubble sort that goes from beginning to end, and then reverses itself, going end to beginning. It can move turtles fairly well, but it retains O(n2) worst-case complexity. Comb sort compares elements separated by large gaps, and can move turtles extremely quickly before proceeding to smaller and smaller gaps to smooth out the list. Its average speed is comparable to faster algorithms like quicksort.
Rabbits and turtles
The positions of the elements in bubble sort will play a large part in determining its performance. Large elements at the beginning of the list do not pose a problem, as they are quickly swapped. Small elements towards the end, however, move to the beginning extremely slowly. This has led to these types of elements being named rabbits and turtles, respectively, after the characters in Aesop's fable of The Tortoise and the Hare.Various efforts have been made to eliminate turtles to improve upon the speed of bubble sort. Cocktail sort is a bi-directional bubble sort that goes from beginning to end, and then reverses itself, going end to beginning. It can move turtles fairly well, but it retains O(n2) worst-case complexity. Comb sort compares elements separated by large gaps, and can move turtles extremely quickly before proceeding to smaller and smaller gaps to smooth out the list. Its average speed is comparable to faster algorithms like quicksort.
Pseudocode implementation
procedure bubbleSort( A : list of sortable items )
n =
length(A)
repeat
swapped
= false
for i =
1 to n-1 inclusive do
/* if
this pair is out of order */
if
A[i-1] > A[i] then
/*
swap them and remember something changed */
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not
swapped
end procedure
Java Implementation
int a[]={9,8,7,6,5,4,3,2,1,0}
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
if(a[j>a[i]]){
int temp = a[i];
a[i]=a[j];
a[j]=temp;
}
}}
No comments:
Post a Comment