布尔(Boolean)类型用来表示逻辑里的真(TRUE)或假(FALSE)。
布尔类型最多的用途有两个:
(1)设置FLAG,通常在循环外设置FLAG的初始值,在循环内满足一定条件时变更FLAG的值,这样查看FLAG的值,就可以知道循环逻辑中是否满足一定条件的实例。例如冒泡排序就用到了设置FLAG值的方法。
(2)用作控制逻辑,例如比较版本号:
题目描述: 写一下冒泡排序算法。
冒泡排序是经典的排序方式之一,算法复杂度为O(n 2 )。其算法的核心是,对一个n个元素数组,需要进行n-1轮的循环比较。每一轮的循环中,将相邻的元素进行比较,如果左边的元素值大于右边的元素,则将两者的位置交换;每一轮结束后,最大值的元素就会放置在最右的位置;这样循环结束后,所有的元素都会按从小到大的顺序排列完成。
例如对数组[6,5,4,1,2,3]用冒泡方法进行排序:
原始数组: [6,5,4,1,2,3]
第一次循环:[5,4,1,2,3,6]
第二次循环:[4,1,2,3,5,6]
第三次循环:[1,2,3,4,5,6]
第四次循环:[1,2,3,4,5,6]
第五次循环:[1,2,3,4,5,6]
大家注意到第四、五次循环时,并没有发生位置交换。这时可以设置一个FLAG,如果一个循环中没有位置交换,则说明排序已完成,退出循环即可。这样一个FLAG变量的设置,减少了一次循环的时间。
在其他的场合,也可以设置合适的FLAG,当满足条件时更改FLAG的值,然后检测FLAG的值决定是否退出循环,可以减少循环的次数,提高程序的效率。
程序代码如下:(源码文件:ch02/bubble_sort.php)
在控制逻辑中,所有表达式的值都会先转换为boolean值再进行比较,表2-1列出了常见的类型转换。
表2-1 其他类型转换为布尔类型
题目描述: 不同类型数据与Boolean的比较,判断其输出是什么?
程序代码如下:(源码文件:ch02/boolean.php)
点评:考察点是各种数据类型到boolean的转换,参考表2-1,读者可以实际运行一下程序,思考为什么会是这样的结果。