直接插入排序:
就是依靠已存在有序的数据,将无序的数据,依次插入到有序的序列中,然后形成有序的数据。
就以4,6,3,2,8为例子,首先我们以4为一个有序的序列,取4以后的元素,与这个有序的序列进行比较。然后Insertsort函数中第一层for循环,i从1开始也是这个原因,避开第一个元素,拿后面的元素进行比较。因为插入需要进行移位操作,所以我们设置变量tmp记录下当前元素,然后从后往前,依次和有序序列中的元素进行比较,同时还进行位移的操作。等到比较完成,找到合适的位置,再将标记tmp里面的数值赋值给找到位置。
后面的2和8的比较也是一个道理。
希尔排序:
希尔排序就是在直接插入排序的基础上进行优化,它针对的是大数量数据的排序。其实就是有规则的拆分数据,形成一个个数组,在内部进行直接插入排序。这里不多一一解释,直接上代码。
快速排序:
快速排序,本质就是选定一个数值,将比它小的放左边,比它大的放右边。(左右放置数据大小随意,这些左右的数据都是无序的。),然后再在左右两边选定一个数值,继续重复前面的操作。直到最后,所有的数据就被排序好了。
c语言实现: