冒泡排序的简单实现

来源:互联网 发布:node.js有没有用 编辑:程序博客网 时间:2024/06/03 17:31
  冒泡的意思就是一次循环中依次比较相邻位置的数,满足则交换。

第一个for代表次数,第二个for来真正的两两比较。

 冒泡的关键在于循环条件的次数确定,先看第一个for循环是length-1,

 比如5个数 5 3 1 2 0,那么看第一次比较后变成3 1 2 0 5 第二次变成

 1 20 3 5 第三次变成 1 0 2 3 5 第四次变成 0 1 2 3 5 最后一次不需要比较了,肯定最小

 所以是length-1次了

 然后看第二个循环就是用来俩俩比较的 比如5个数 5 3 1 2 0,有这样的比较(先认为最多需要比较多少次,

 忽略中间遇到的不需要比较的),那么俩俩比较最多需要4次((5,3) (3,1) (1,2) (2,0)先忽略交换哈),第二次循环变成4个数俩俩比较 需要3次,也就是说一个数冒泡上去了,那么我们就不需要理她了,只关心剩下的数的比较即length-1-i。当然写length-1也可以,但是就多了很多没用的循环。

#include <stdio.h>//=====================void swap(int &i, int &j) {//交换俩数int temp = i;i = j;j = temp ;return ;}//======================================void BubbleSort(int *a, int len ) {int i, j;for(i = 0; i < len - 1; i++) {for(j = 0; j < len -i -1 ; j++) {if(a[j] > a[j+1])swap(a[j], a[j+1]);}//for}//for}//BubbleSort//=======================================int main() {int array[] = {6,8,3,9,5,0,1,4,2,7};//int array1[] = {6,8,3,9,5};        BubbleSort(array,10);for(int i  = 0; i < 10; i++) {printf("%d ",array[i]);}return 0;}



0 0