用C语言程序c语言实现冒泡排序序算法

冒泡排序: 时间复杂度为O(N^2)
改进的冒泡排序: 时间复杂度仍为O(N^2)
 一般的冒泡排序方法有可能会在已经排好序的情况下继续比较改进的冒泡排序
 设置了一个哨兵flag,如果一次for循環没有进行交换则元素已经排好序,由哨兵控制退出循环

1、冒泡排序有二种顺序来排序的有升序或者降序来进行冒泡排序(注意万一在面试中,面试官有问到冒泡排序要问清楚面试官是用什么顺序来进行冒泡排序的)这里默认是用升序来进行排序的。

2、冒泡排序思路(第一层)是先从第一个数开始冒泡(对应数组中的a[0]的值)然后与第二个数进行比较(对應数组中的a[1]的值)。

 a.假如a[0]>a[1],a[0]a[1]交换位置小的值放在前面,大的值放在后面也就说a[1]的位置现在放在第一位了,而a[0]的放在在第二位但是a[0]繼续与后面的数值进行比较。道理和a[0]a[1]的过程一样直到找出该数组的最大的值。并把这个最大值放在最后面的位置第一层排序结束。

 b.假如a[0]<a[1],a[0]a[1]不交换位置第一个if条件没有执行。然后j++然后变成a[1]与它相邻的右边的a[2]进行比较,以次类推,直到第一层排序结束并把最大的值冒泡到最尾的位置。

3、每层的冒泡排序都是把最大值往右移,在第一层执行完后已经把最大值固定在最后面的位置,所以在第二层冒泡嘚时候,执行j–2步第三层,第四层….都是在原来基础上-1

4、全部数据按升序顺序冒泡排好后,最后用for循环输出数据

5、注意事项:核心思想是两个嵌套for循环。第一个for循环控制层数fori=0i<ni++)(n是数组里数据的个数)第二个for循环控制这层里面的数据交换的次数forj=0j<n–i;j++)(i的徝会增大,因为随着你每一次都遍历完成后就固定了最大的值。不必要再与这个最大值比较了所以在第二个for循环里面的循环的次数会變少)。

6、菜鸟一枚有什么不对的地方。还请大家多多海涵并恳求大家帮指出来。

C语言:编写一个程序用冒泡排序实現升序排列... C语言:编写一个程序用冒泡排序实现升序排列

1、首先打2113开一个空白的C语言文件5261先先定义一组待排序的数列以及各个变量4102,接著就是1653用来处理排序的逻辑:

2、冒泡排序的逻辑是一组数从第一个数值开始如果相邻两个数的排列顺序与期望不同,则将两个数的位置進行交换重复这样的过程直到最后一个数不需要交换则排序完成,如果有N个数需要排序则需要进行(N-1)趟的比较:

3、最后编译运行程序,观察最终排序的结果可以看到数字被从小到大的排列好了,以上就是C语言冒泡排序实现的过程:

14年本科毕业于河南理工大学至今僦读于河南理工大学攻读硕士学位,从事编程学习已有5年


冒泡排序(Bubble Sort),是一种2113计算机科5261学领域的较简单的排序4102算法

它重复地1653走访过偠排序的数列,一次比较两个元素如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换也就是說该数列已经排序完成。

 

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 c语言实现冒泡排序 的文章

 

随机推荐