冒泡排序法是对于数组运用的一个基础体现。中心思想
:
依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。(源于百度)
看过许多人的博客中对于冒泡排序的讲解,于是我也开始尝试写出冒泡排序。
先上代码:
运行结果:
我们先来看int main里的代码,程序是从这里开始运行的。
这里是运用到动态内存分配的知识,不多讲,前面的博客讲过,然后把元素赋给数组,接着往下看,
Sort(pArray, *pcount);
这里是把数组和数组元素数量传进函数,来看Sort()函数,他是把元素进行排序,首先传进两个参数指针arr和count,设定一个整型变量,先把整个数组进行循环,循环count次,此为主循环;定义一个副循环,与主循环的元素进行比较(就是相邻两个数进行比较)。然后进行从小到大的顺序排列。然后运用output()函数输出数组 元素。
冒泡排序的原理就是两两比较,从a[0]到a[N-1]依次比较,同时每次两两比较后,将大的数沉底,并与下一个数进行比较,在把大的数沉底,不断重复直到最后。
**然后进行第二次比较,重复刚才的步骤直到所有的大数沉底位置。
**
**主循环的作用就是定义循环比较的总次数,由输入的数的个数决定。
**
**副循环的作用就是保证在主循环的基础上,依次进行两两比较,并将大的数沉底。
**
**
**
冒泡排序大致就是这样的原理