冒泡排序法在C语言课程中是一个很重要的算法。要熟练掌握冒泡排序法,首先要有深刻的理解,同时也要准确地记住这个算法对应的代码,这样才能快速、准确地运用冒泡排序法写代码解决问题。那怎样有效地记忆住冒泡排序法对应的代码呢?下面跟大家分享一下我总结的口诀。
原创不易,欢迎点赞。
首先要对循环次数有深刻的理解,下面是几种情况:
1、for(i=0 ; i<k ; i++)
循环了 k 次,因为最后一次循环对应的 i 值为 k-1,而 0~k-1 有 k 个数,一个数对应一次循环,所以循环了 k 次。
2、for(i=0 ; i<=k ; i++)
循环了 k+1 次,因为最后一次循环对应的 i 值为 k,而 0~k 有 k+1 个数,一个数对应一次循环,所以循环了 k+1 次。
3、、for(i=1 ; i<k ; i++)
循环了 k-1 次,因为最后一次循环对应的 i 值为 k-1,而 1~k-1 有 k-1 个数,一个数对应一次循环,所以循环了 k-1 次。
4、for(i=1 ; i<=k ; i++)
循环了 k 次,因为最后一次循环对应的 i 值为 k,而 1~k 有 k 个数,一个数对应一次循环,所以循环了 k 次。
口诀:
两重循环,//有两个for 循环
两个变量,//有两个循环控制变量 i,j;其中j 既是循环控制变量,又
一重循环 NUM-1 次,//NUM 为数组的元素数目。
二重循环 ( NUM-第几次一重循环 ) 次,
//说明:为什么不说 NUM-i 次呢? 因为 i 的初始值为1时才是 NUM-i 次,i 的初始值为0 时就是 NUM-i-1 次了。
一重循环体放二重循环,
二重循环体放大小比较与交换。
交换内容要看 j 初值。
//说明:j 的 初值为 1时 应交换 a[j-1] 与 a[j] , j 的 值为0时交换 a[j] 与 a[j+1].总之要从第一个数 a[0] 开始比较、交换。
所以冒泡排序法有以下 2*2=4 种写法。各种写法的区别是 i 和 j的初值不同。
写法一:(i=0 , j=0)
#include
写法二:(i=1 , j=0)
#include
写法三:(i=0 , j=1)
#include
写法四:(i=1 , j=1)
#include
原创实属不易,
欢迎小伙伴们点赞!