二、基本算法

一、选择排序

核心思想:

    以数组为例:取出数组的最大值(最小值),然后将最大值与数组的第一位进行交换。

讲解:第一次遍历获取第一位到最后一位的最大值,与第一位交换位置,第二次遍历获取第二位到最后一位的最大值与第二位交换位置,以此类推,当数组遍历完成后数组也就排序完成。

代码:

二、插入排序

核心思想:

        将数据插入到一个有序的数组中。

讲解:将数组的第一位看成有序的,从第二位开始与其前一位进行比较,如果大于前一位就交换位置否则进行第三位,第三位与第二位进行比较,第三位大于第二位,交换位置然后与第一位比较大于就交换位置,否则进入第四位,以此类推,思想也比较简单。

        看代码理解:


插入排序

三、插入排序的优化

正常来说,插入排序较选择排序来说循环可以提前终止,理论上插入应该比选择效率要高。但是经过测试后发现,其效率比低。究其原因是因为每一次交换需要三次赋值,大大降低了其效率。

优化思想,将需要插入的数据取出来,与前一位进行比较,如果满足判断条件就将前一位向后移一位,若不满足条件就将其赋值给前一位(注意数组下表越界问题)。

代码:


优化后的插入排序

优化后效率明显提升,对于数据来说,越有序的数据使用插入排序效率越高,插入排序是O(n2)级别的算法,对于一个有序的数据,其效率为O(n)。插入排序的优化应该掌握。

你可能感兴趣的:(二、基本算法)