
排序
wangyangmingtian
这个作者很懒,什么都没留下…
展开
-
排序算法之堆排序
堆排序实际上利用了树的原理,其中在进行堆排序的过程,要先对给定的数组进行建堆(本算法采用的是大堆,即根节点比左右孩子都大),然后获取数组的中间值,根据此值,进行遍历建堆。具体Java实现代码如下所示:public class HeapSort { public void heapSort(int[] array){ if (array == null || array....原创 2018-08-26 13:31:07 · 148 阅读 · 0 评论 -
排序算法之快速排序
快速排序思想:快速排序实际上就是交换元素,类似于二分查找(本人理解),只不过二分查找是直接找寻中间位置的元素,然后比较大小,而快速排序则是经过前后不停的遍历数组,从而找到元素的落脚点,并把元素放在该位置(该位置不一定是中间位置,但是该元素的前面全部小于该元素,后面全部大于该元素)上,然后在以该元素为界分为前后两个部分,重复上述操作,至最后得出结果,具体Java代码(本代码采用升序排列)实现如下所示...原创 2018-08-26 20:09:34 · 418 阅读 · 0 评论 -
排序算法之归并排序
归并排序的思想:采用递归,将大数组划分为若干个小数组,进行各自的排序然后将各个小数组之间归并排序,最后对整个数组排序,划分数组的方法是采用一分为二平均分的原则,本算法是按升序排列,具体Java代码实现如下所示:public class MergeSort { public void mergeSort(int[] array,int left,int right){ ...原创 2018-08-26 21:44:26 · 142 阅读 · 0 评论 -
排序算法之基数排序
基数排序思想:基数排序的实现,是将原数组中的数值,分别按照个位,十位,百位......等的数值依次分组,比如,先按照个位数值分组,将原数组的元素按照个位数字进行依次分配,然后将分配好的元素,依次按照个位数字的大小依次存入到原数组中,然后再将该数组按照十位,百位....上的数字分组,最终实现排序,具体的Java代码实现如下所示:import java.util.ArrayList;impor...原创 2018-08-27 10:03:58 · 927 阅读 · 0 评论 -
排序算法之选择排序算法
基本思想:选择排序在数组中不断的寻找到最小值(升序排列),然后将找到的值与指定的位置进行替换,即可看做将原数组分为两部分,一部分为有序的,另一部分为无序的,设置一个变量指向无序的第一位,每次遍历的时候只需要在无序的那部分查找最小值即可,直到最后排序成功,具体Java代码实现如下所示:public class SelectSort { /** * 选择排序算法 */...原创 2018-08-24 21:48:12 · 175 阅读 · 0 评论 -
排序算法之直接插入排序
插入排序具体Java代码实现如下所示:public class InsertSort { /** * 直接插入排序算法 * @param array */ public void insertSort(int[] array){ int data; for (int i=1;i<array.length;i++...原创 2018-08-25 18:32:13 · 150 阅读 · 0 评论 -
排序算法之二分法插入排序
二分法插入排序与直接插入排序很相似,只不过,在查找插入位置的时候,用的是二分查找方法,具体的Java代码实现如下所示:public class BinaryInsertSort { private void binaryInsertSort(int[] array){ for (int i=0;i<array.length;i++){ i...原创 2018-08-25 20:41:03 · 1060 阅读 · 0 评论 -
排序算法之希尔排序
希尔排序影响时间复杂度的因素是增量的改变,改变的幅度越大时间复杂度越少,具体Java代码实现如下所示:public class HeerSort { /** * 希尔排序 */ private void heerSort(int[] array){ //d为增量,调整增量的变化方式可以减少时间复杂度,本算法采取的是增量递减一的方法改变增量的...原创 2018-08-25 21:32:33 · 167 阅读 · 0 评论