内部排序的方法

2025-04-19 09:51:10

内排序是指所有的数据已经读入内存,在内存中进行排序的算法。

第一种:比较排序

1、主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。

2、常见比较排序算法的性能如下图。

内部排序的方法

3、冒泡排序算法的运作如下:比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

内部排序的方法

4、选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

内部排序的方法

5、插入排序是一种简单直观的排序算法。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置后重复步骤2~5

内部排序的方法

6、归并排序是创建在归并操作上的一种有效的排序算法。归并操作步骤如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针到达序列尾将另一序列剩下的所有元素直接复制到合并序列尾

内部排序的方法

7、堆排序是指利用堆这种数据结构所设计的一种排序算法。堆排序的过程:创建一个堆把堆顶元素(最大值)和堆尾元素互换把堆的尺寸缩小1,并调用heapify(A, 0)从新的堆顶元素开始进行堆调整重复步骤2,直到堆的尺寸为1

内部排序的方法

8、快速排序是由东尼·霍尔所发展的一种排序算法。步骤为:从序列中挑出一个元素,作为"基准"(pivot).把所有比基准值小的元素放在基准前面,所有比基准值大的元素放在基准的后面(相同的数可以到任一边),这个称为分区(partition)操作。对每个分区递归地进行步骤1~3,递归的结束条件是序列的大小是0或1,这时整体已经被排好序了。

内部排序的方法

第二种:非比较排序

1、主要有:计数排序,基数排碌食撞搁序,桶排序等。计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。[1-2]当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)

内部排序的方法

2、基数排序(radix 衡痕贤伎sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bi荏鱿胫协n sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

内部排序的方法

3、桶排序 (Bu罕铞泱殳cket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n)下限的影响。

内部排序的方法
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢