数据结构之排序算法(C语言)
一.冒泡排序 冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的 比较 和 交换 来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。举个栗子,对5,3,8,6,4这个无序序列进行冒泡排序。首先从前向后冒泡,5和3比较,换数,序列变成3,5,8,6,4。同理5和8比较,不用交换,还是3,5,8,6,4。8和6比较,交换,变成3,5,6,8,4。8最后和4比较,交换,得到3,5,6,4,8。这样一次冒泡就完了,把最大的数8排到最后面了。对剩下的序列依次冒泡就会得到一个有序序列。冒泡排序的时间复杂度为O(n^2)。 代码实现: /* 冒泡排序 */ #include <stdio.h> void bubble_sort( int *a, int len) { int i,j,t; for (i= 0 ;i<len- 1 ;i++) // 整体比较次数 (比如两个数只需要比较一次)所以要减一 for (j= 0 ;j<len-i- 1 ;j++) // 每一次需要哪几个数来比,减掉1个(比如两个数只需要比较一次),再减掉已经排好了的数. if (a[j]>a[j+ 1 ]) { t = a[j]; a[j] = a[j+ 1 ]; a[j + 1 ] = t; } } int main() { int a[ 5 ] = { 5 , 3 , 8 , 6 , 4 };