冒泡排序算法思想简单描述:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的位置 k,这样可以减少外层循环扫描的次数。冒泡排序是稳定的。算法时间复杂度 O(n2)算法实现:/*功能:冒泡排序输入:数组名称(也就是数组首地址) 、数组中元素个数*/void bubble_sort(int *x, int n)int j, k, h, t;for (h=n-1; h0; h=k) /*循环到没有比较范围*/for (j=0, k=0; j *(x+j+1) /*大的放在后面,小的放到前面*/t = *(x+j);*(x+j) = *(x+j+1);*(x+j+1) = t; /*完成交换*/k = j; /*保存最后下沉的位置。这样 k 后面的都是排序排好了的。*/