常见排序

数组:有序的元素序列,有下标(角标),插入快,查找、删除慢,大小固定只能存储单一元素;有序数组比无序数组查询快。

常见排序:

1、选择排序(优点:数据移动次数已知为(n-1)次;    缺点:不稳定,比较次数多)

  -从待排序序列中,找到关键字最小的元素;

  -如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

  -从余下的 N - 1 个元素中,找出关键字最小的元素,重复上诉一、二步骤,直到排序结束。

2、冒泡排序(优点:稳定、简单 ;  缺点:慢,每次只能移动相邻的两个数据    一般不会用冒泡排序,性能慢

  -比较两个相邻的元素,如果第一个比第二个大,就交换位置;

  -对每一对相邻的元素做上诉比较,从第一对到最后一对,这时候,最后一个元素就是最大的元素;

  -针对所有元素重复上面步骤,除了最后一个元素;

  -一直比较,直到没有任何元素需要比较。

3、插入排序(优点:稳定,快;    缺点:比较次数不一定,当数据总量庞大的时候,比较次数越少,插入点后的数据移动越多,但用链表可以解决这个问题)

4、快速排序(优点:极快,数据移动少;   缺点:不稳定)

5、希尔排序(优点:快,数据移动少;   缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取)

6、箱排序(优点:快,效率达到O(1)    缺点:数据范围必须为正整数并且比较小)

7、归并排序

  -归并排序是一种非就地排序,将需要与待排序序列一样多的辅助空间。在使用它对两个己有序的序列归并,将有无比的优势。其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。

  对数据的有序性不敏感。若数据节点数据量大,那将不适合。但可改造成索引操作,效果将非常出色。

8、堆排序

  由于它在直接选择排序的基础上利用了比较结果形成。效率提高很大。它完成排序的总比较次数为O(nlog2n)。它是对数据的有序性不敏感的一种算法。

  但堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。

原文地址:https://www.cnblogs.com/zhoanghua/p/9281582.html