Pascal语言,少量数据(<100)用哪种排序比较好?

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:43:47

O(N^2)时间复杂度,

插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。

反而在这种情况下,快速排序反而慢了。

当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。

若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。

当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。

宜用归并排序。

当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。

时间复杂性比较

插入排序、冒泡排序、选择排序的时间复杂性为O(n2)

其它非线形排序的时间复杂性为O(nlog2n)

线形排序的时间复杂性为O(n);

冒泡排序。
因为冒泡排序编起来简单,而且稳定。

建议使用筒排序(小学生排序)
可以上网查一下
这种排序速度最快,但耗空间最大,不适合数量大的排序

1\冒泡排序
2\选择排序
3\堆排序
4\二叉排序树
5\快排

写个快排累不死你

for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j]
then 交换;
这种冒泡带选择的应该是首选

简单排序

插入平均速度最快
起泡处理起来最优秀(顺序的话是O(n))
交换最好写

事实上,小于100的排序对需要的时间几乎为0,所以为了编程简单建议写交换排序。