排序:基于比较、和不基于比较的排序。稳定性:是在一组待排序的数据中,如果有相等的元素,经过排序算法后相等的元素依然保持不变。
排序的内存消耗:可以通过空间复杂度来衡量。这里有个新概念:原地排序:是指空间复杂度是O(1)的排序算法
排序算法的执行效率:从最好情况、最坏情况、平均情况时间复杂度。
时间复杂度的系数、常数、低阶也算进来、比较和交换次数。
冒泡排序:原理:在一组无序的数据中,相邻的两个元素进行比较。看是否满足大小关系要求;如不满足则交换,满足就交换。一次冒泡会移动它应该在的位置,重复n次就能完成n个数据的排序工作。
插入排序:把一组无序数组,分为两组;已排序区间,未排序区间。初始化状态时:数组的第一个元素作为有序数组;取未排序区间的元素,在已排序的区间中找到合适的位置插入。并保证已排序区间的元素一直有序。
重复这个过程。直到未排序区间的元素为空。
此算法我花费了很久的时间把算法理清楚,并把代码写出来。写一下感受。此算法的重点时在取出未排序区间的元素时与排序区间之间的比较。
因为已排序区间是已经排好序的并是数组的特性,在进行比较的时候,当已排序区间的最后一个元素与排序区间的元素比较时,如果符合排序的规则直接中断循环,如果没有符合规则,则交换。一直到符合规则为止,如果一直到循环结束还没有完成排序。则放在已排序区间的第一个。我一直未注重这个细节,所以一直很纠结。