文章分类 - 排序算法
java
排序算法总结
摘要:定义: 根据某个关键字,对序列对象进行排序。 术语: 1,稳定:如果a原本在b的前面,而a==b,排序之后仍然在b的前面。 2,不稳定:如果a原本在b的前面,而a==b,排序之后a可能出现在b的后面。 3,内排序:所有排序操作都是在内存中完成。 4,外排序:由于数据太大,因此把数据放在磁盘中,而排序
阅读全文
基数排序(Radix Sort)
摘要:基数排序(Radix Sort)是非比较的排序算法,对每一位进行排序,从最低位开始排序,复杂度为O(k*n),n为数组长度,k为数组中的最大数的位数。基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排
阅读全文
桶排序(Bucket Sort)
摘要:桶排序(Bucket Sort)是计数排序的升级版。工作原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶里在分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。 算法描述: 1,找出数据空间,确定桶的个数。 2,遍历数组,将数据一个一个放到对应的桶里去。 3,对
阅读全文
计数排序(Counting Sort)
摘要:计数排序(Counting Sort)的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须有确定范围的整数。计数排序是一种稳定的排序算法,它使用一个额外的数组,其中第i个元素是待排序数组中值减去最小值等于i的元素的个数。然后根据额外数组
阅读全文
堆排序(Heap Sort)
摘要:堆排序(Heap Sort)是指利用堆积树(堆)这种数据结构所涉及的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值不大于其父节点的值。 算法描述: 1,将初始待排序序列(R1,R2....Rn)构建成大根堆,
阅读全文
希尔排序(Shell Sort)
摘要:希尔排序(Shell Sort)也是一种插入排序,又称缩小增量排序(Diminishing Increment Sort)。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,整个序列分成一组,算法便终止。 算法描述: 1,
阅读全文
快速排序(Quick Sort)
摘要:通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,以此达到整个数据变成有序序列。 算法描述: 1,从序列中挑出一个元素,称为枢点(pivot)元素。 2,重新排序,使得比枢点元素小的所有元素都放在枢点的前面
阅读全文
归并排序(Merge Sort)
摘要:归并排序(Merge Sort)也称为合并排序。合并排序是建立在归并操作上的一种有效的排序算法。该算法也是采取分治(Divide and Conquer)的思想。合并算法是将两个(或两个以上)有序表合并成一个新的有序表,即把带排序的序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整
阅读全文
插入排序(Insertion Sort)
摘要:插入排序(Insertion Sort)是一种简单直观的排序算法。通过构建有序序列,对于未排序数据,在已排序序列中从后面向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最
阅读全文
选择排序(Selection Sort)
摘要:选择排序(Selection Sort)是一种简单直观的排序算法。首先在未排序序列中找到最小元素,存放在排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法描述: 1,从待排序序列中,找到最小的元素;起始假定第一个元素为最
阅读全文
冒泡排序(Bubble Sort)
摘要:冒泡排序是一种简单的排序算法。它一轮一轮的遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。如此继续进行,直到把最小的元素放在第一个位置。 算法描述: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的
阅读全文
浙公网安备 33010602011771号