
排序
YRZ-James
who say you are not perfect?
展开
-
双路快速排序的实现
双路快速排序的实现-具体实现双路快速排序是比较有效的一种排序方式,其复杂度为o(nlogn).可以处理大量的数据,这些数据即使在某些范围中重复出现,排序时间通常也能维持高效的状态。实现排序的时候需要使用quicksort函数,并向函数中传递数组名称,首末范围(此处需要注意区间的开闭,开闭不一样,函数的实现也不同)。quicksort流程如下:1.通过分割将数组分割为前后两个局部数组(执行...原创 2018-10-16 20:15:36 · 333 阅读 · 0 评论 -
希尔排序
希尔排序这次来和大家介绍一下希尔排序。我们知道插入排序可以高速处理顺序较整齐的数据,而希尔排序是基于插入排序的一种排序方式,并且希尔排序是可以充分发挥插入排序这一特长的高速算法。希尔排序中,程序会重复进行以间隔为g的元素为对象的插入排序。在希尔排序中每次的间隔g都为不同的值,但是最后一次的g一定是为1的(即普通的插入排序法),但是经过了前几次的排序后此时的对象数据的顺序应该已经很整齐了,也就是相...原创 2018-11-02 20:11:39 · 144 阅读 · 0 评论 -
插入排序
插入排序插入排序类似于我们打牌的时候对手中的牌进行排序的过程,具体过程为:插入排序会将数组分为“已排序部分”和“未排序部分”。首先将开头元素看成已经排序部分。然后执行取出未排序部分的头元素赋值给变量v,将v和已排序部分进行比较,比v大的都向后挪一个单位,随后找出空位插入v,一直循环这个操作直到未排序部分消失。插入排序是一种稳定排序,因为在排序中,我们只是将比v大的元素向后平移,不相邻的元素不会...原创 2018-11-02 20:45:30 · 864 阅读 · 0 评论 -
归并排序
归并排序这次来讲一下归并排序的心得,首先归并排序的复杂度是o(nlogn),相比于冒泡排序,选择排序来说,归并排序在处理大量数据进行排序的时候显得更为高效。归并排序具体步骤如下:首先以整个数组为对象执行mergesort(要传入数组的首元素位置,和数组末元素位置之后一个元素的位置)。mergesort的具体操作如下1.将给定的包含n个元素的局部数组分割为两个局部数组,每个元素包含n / ...原创 2018-11-05 12:35:07 · 193 阅读 · 0 评论 -
选择排序
这次来说一下选择排序,与插入排序一样,选择排序在计算中数组也分为“已排序部分”和“未排序部分”。下面来说一下具体步骤,在初始状态中已排序部分的元素为0个,所以假设最小元素下标min就等于0,然后将a[min]和之后的元素比较,遇到比a[min]小的则把它的下标给min。最后a[min]与首元素交换,这些步骤为第一轮排序。此后从第二个元素开始到末位再挑选最小元素的下标和其交换,以此类推,直到未排序部...原创 2018-11-08 19:50:20 · 179 阅读 · 0 评论