如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。
想写出精炼、优秀的代码,不通过不断的锤炼,是很难做到的。
八大排序算法
排序算法作为数据结构的重要部分,系统地学习一下是很有必要的。
1、排序的概念
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。
排序分为内部排序和外部排序。
若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。
反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。
2、排序分类
八大排序算法均属于内部排序。如果按照策略来分类,大致可分为:交换排序、插入排序、选择排序、归并排序和基数排序。如下图所示:
3、算法分析
1.插入排序
*直接插入排序
*希尔排序
2.选择排序
*简单选择排序
*堆排序
3.交换排序
*冒泡排序
*快速排序
4.归并排序
5.基数排序
不稳定排序:简单选择排序,快速排序,希尔排序,堆排序
稳定排序:冒泡排序,直接插入排序,归并排序,奇数排序
1、插入排序
将一个和第二个元素排好序,然后将第3个元素插入到已经排好序的元素中,依次类推(插入排序*好的情况就是数组已经有序了)
2、希尔排序
因为插入排序每次只能操作一个元素,效率低。元素个数N,取奇数k=N/2,将下标差值为k的数分为一组(一组元素个数看总元素个数决定),在组内构成有序序列,再取k=k/2,将下标差值为k的数分为一组,构成有序序列,直到k=1,然后再进行直接插入排序。
3、堆排序
以升序排序为例,利用小根堆的性质(堆顶元素*小)不断输出*小元素,直到堆中没有元素
1.构建小根堆
2.输出堆顶元素
3.将堆低元素放一个到堆顶,再重新构造成小根堆,再输出堆顶元素,以此类推
本文摘自:网络 日期:2020-04-07
详情点击:ABB机器人代理商