–排序(sort)
将无序的数据安装特定的规则排成有序数据(升序、降序)
常见的排序算法,有十几种,比较多,有些非常抽象。
– 冒泡排序:
--算法原理:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
–代码实现:
–优缺点:
--优点:比较简单,空间复杂度较低,是稳定的;
--缺点:时间复杂度太高,效率慢;
–选择排序
--算法原理:
随机确定一个标志位(一般为第一个数字)作为最小数,然后向后遍历,找到比标志位更小的数便与标志位互换位置并更新最小数,
--实现步骤为:
1.将数组的第一个数字设置为标志位最小数并记录最小数下标。
2.向后遍历,发现更小数后将该数与标志位互换位置并更新最小数与最小数下标。
3.循环完成排序
–代码实现:
–算法原理
--将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)
--算法步骤:
1.从第一个元素开始,该元素可以认为已经被排序;
2.取出下一个元素,在已经排序的元素序列中从后向前扫描;
3.如果该元素(已排序)大于新元素,将该元素移到下一位置;
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置(如果待插入的元素与有序序列中的某个元素相等,待插入元素插入到相等元素的前后皆可。);
5.将新元素插入到该位置后;
6.重复步骤2~5。
–代码实现:
–二分查找(折半查找):
针对于有序的序列,可以直接查找中间值
–算法原理:
将数组分为两份,首先取出中间值,判断查找值是否等于中间值,如果等于,则直接返回,否则将数组以中间值为分割线进行分割,再判断查找值和中间值的大小关系,如果查找值小于中间值,则从 中间值前面的数组中查找(不包括中间值,因为已经做过比较了),否则从后面的数组中查找,递归实现全部查找,如果最后没有找到,在循环外返回找不到即可!
–代码实现: