冒泡排序
伪代码
BubbleSort(input ele[],input length)
for i <- 1 to length step 1
for j <- i+1 to 0 step -1
if ele[j] < ele [j - 1]
swap (ele[j],ele[j - 1])
end if
end
下面这一段是摘自算法导论 P23页的伪代码:
BUBBLESORT(A)
for i = 1 to A.length-1
for j = A.length downto i + 1
if A[j] < A[j - 1]
exchange A[j] with A[j - 1]
C++/C
void BubbleSort (int a[],int length)
{
int i,j;
for (i = 0 ;i < length-1; i++)
for (j = i + 1;j >= 0 ; j--)
if (a[j-1] > a[j])
swap (&a[j-1],&a[j]);
}
void swap(int *a,int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
python
def BubbleSort(array):
for i in range(len(array)-1):
for j in range(i+1, 0,-1):
if array[j-1] > array[j]:
array[j-1], array[j] = array[j], array[j-1]
下面这个与算法导论的代码匹配:
def bubble_sort(list):
for i in range(0, list.__len__()):
for j in range(list.__len__()-1, i, -1):
if list[j] < list[j-1]:
list[j], list[j-1] = list[j-1], list[j]
return list
print bubble_sort([5, 3, 2, 4, 1, 0, 6, 9, 8, 7])
Java
public class bubblesort {
public static void main(String args[])
{
int [] array = {5, 7, 1, 9, 3, 4, 2, 8, 6, 0};
for (int i : array)
System.out.print(i + " ");
System.out.println();
for (int i = 0; i < array.length; i++)
for (int j = array.length - 1; j > 0; j--)
{
if (array[j] < array[j-1])
{
int tem = array[j];
array[j] = array[j-1];
array[j-1] = tem;
}
}
for (int i : array)
System.out.print(i + " ");
}
}
算法解释
i是控制i以及i之前的元素,而j呢,是将之前i控制的范围之内的元素变得有序,另外,交换是通过swap函数来进行交换的,交换两个相邻的元素就好。
这样,就可以排出顺序了。