算法学习与代码实现4——冒泡排序

来源:互联网 发布:邢台犀牛软件培训班 编辑:程序博客网 时间:2024/05/21 10:33

算法学习与代码实现4——冒泡排序

这篇博客讲最简单的一个排序算法,也是我生命中接触的第一个排序算法。

算法思路

想当年读大一的时候学习C语言,冒泡排序是C语言课上讲的第一个排序算法,可能也是唯一一个。

思路很有趣,为了确保序列从小到大排列,从最后两个数开始,依次比较相邻的两个数,如果需要交换,就将两个数进行交换。这种比较依次向前,直到前面的数都已经是排好序的数为止。这样一趟一趟的进行比较,每一趟都将最小的数“挤”到最前面。

算法性能

稳定性:稳定排序

时间复杂度: O(n^2)

空间复杂度: O(1)

伪代码

BUBBLESORT(A)for i <- 1 to length[A]    do for j <- length[A] downto i + 1        do if A[j] < A[j - 1]            then exchange A[j] <-> A[j-1]

算法思路很很简单,就是把小的往前挤。

c语言实现

void bubble_sort(int *array, int size){    int tmp;    for ( int i = 0; i < size; i++ ) {        for ( int j = size - 1; j > i; --j ) {            if ( array[j] < array[j-1] ) {                tmp = array[j];                array[j] = array[j-1];                array[j-1] = tmp;            }        }    }}

本文代码托管于:
https://github.com/haoranzeus/algorithms_study

0 0
原创粉丝点击