冒泡排序

来源:互联网 发布:oracle数据库课程设计 编辑:程序博客网 时间:2024/06/07 15:14

冒泡排序

伪代码 在notepad++上写的,可能不太规范,请各位看官谅解。

BubbleSort(input ele[],input length)for i <- 1 to length step 1for j <- i+1 to 0 step -1if ele[j] < ele [j - 1]swap (ele[j],ele[j - 1])end ifend 

下面这一段是摘自算法导论 P23页的伪代码:

BUBBLESORT(A)for i = 1 to A.length-1for j = A.length downto i + 1if A[j] < A[j - 1]exchange A[j] with A[j - 1]


C++,在vs2010上运行。

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 ,在Jetbrains pycharm 上运行通过。

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 listprint bubble_sort([5, 3, 2, 4, 1, 0, 6, 9, 8, 7])


算法思想呢,其实很简单的。

i是控制i以及i之前的元素,而j呢,是将之前i控制的范围之内的元素变得有序,另外,交换是通过swap函数来进行交换的,交换两个相邻的元素就好。

这样,就可以排出顺序了。


0 0