说明:
排序就是对某组数据进行升序或降序的方式排列,排序都是针对的索引数组
排序就是将一组数据按照指定的顺序进行排列的过程
排序的分类:
-
内部排序:指将需要处理的数据都加载到内部存储器中进行排序,包括交换式排序,选择试排序和插入式排序
-
外部排序:数据量过大,无法全部加载到内存,需要借助外部存储进行排序,包括合并排序和直接合并排序法
冒泡排序
基本思想:通过对待排序序列从后到前(从下标较大的元素开始)一次比较相邻元素的排序码明若发现逆序则交换,使排序较小的元素逐渐从后向前移动,就像水底气泡一样逐渐向上冒
因为排序的过程中,各元素不断接近自己的位置,如果一躺比较下来没有进行过交换没救说明序列有序,因此要在排序过程汇总设置一个标志判断元素是否进行过交换,从而减少不必要的比较
从小到大排序或从大到小排序
找到从最大的下标的值和前面的值进行比较,如果前面小于后面的值,进行位置交换,以此类推,一直找到当前最大值,一次完成,继续找第二大下标的值进行比较,和它前面的值交换位置,以此类推最终排序完成
如:$arr = array(11,22,44,67,95,33,43)从小到大排序:11,22,33,43,44,67,95
冒泡原理:
-
从小到大排序,确定数组的长度
-
循环遍历找出每个值
-
每一个值和它下一个值进行比较,本身不比较,每次比较取出一个最小值
-
进行大小值交换
-
排序
选择排序
说明:从数组中选择一个数和其他进行比较,如果大于比较的数,交换位置
选择一个我们自己想象的一个数组为最大或最小
基本思想:
第一次从arr[0]-arr[n-1]中选取最小值,与arr[0]交换,
第二次从arr[1]-arr[n-1]中选取最小值,与arr[1]交换,
第三次从arr[2]-arr[n-1]中选取最小值,与arr[2]交换,
……
比如:$arr = array(11,55,22,44,99,77,66,33,88);从小到大排序
选择一个自己想象的最小值,一般选arr[0]的值,和后面的比较,如果大于后面的数组,这两个位置交换
1234