
排序算法
文章平均质量分 78
linyk3
这个作者很懒,什么都没留下…
展开
-
排序算法: 基数排序
基数排序:不稳定的排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的原创 2015-09-02 15:46:27 · 457 阅读 · 0 评论 -
排序算法:选择排序
选择排序:不稳定的排序方法在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成时间复杂度:最差:O(n^2)平均:O(n^2)最好:O(n^2)原创 2015-09-02 10:49:57 · 362 阅读 · 0 评论 -
排序算法:插入排序
插入排序:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置⒌ 将新元素插入到下一位置中⒍ 重复步骤2~5INSERTION-SORT(A)1 for i=原创 2015-09-02 10:40:50 · 375 阅读 · 0 评论 -
排序算法:快速排序
快速排序:不稳定的排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。但若初始序列按关键码有序或基本有序时,快排序反而蜕化为冒泡排序原创 2015-09-02 10:59:03 · 380 阅读 · 0 评论 -
排序算法:归并排序
归并排序:稳定排序归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子原创 2015-09-02 15:42:05 · 315 阅读 · 0 评论 -
排序算法:希尔排序
希尔排序:不稳定排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 =1( …一般的初次取序列的一半为增量,以后每次减原创 2015-09-02 15:12:47 · 415 阅读 · 0 评论 -
排序算法:堆排序
堆排序:不稳定排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。 思想:初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个 堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数重新调整使之原创 2015-09-02 14:35:54 · 343 阅读 · 0 评论 -
排序算法:冒泡排序
冒泡排序: 稳定排序BUBBLE_SORT(A) { for i for j<- 0 down to length[A] - i- 1 do if(A[j] >= A[j+1]) then exchange A[j]A[j+1]时间复杂度:最差: O(n^2) //反序平均: O(n^2)最好: O(n)原创 2015-09-02 09:47:05 · 353 阅读 · 0 评论