![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
宅小年
这个作者很懒,什么都没留下…
展开
-
排序算法-堆排序
堆排序算法可以看做是一种树形的数据结构,它的特点是在排序的过程中,将数组看成一棵完全二叉树的顺序存储结构。 那么先来讲一下完全二叉树的一些定义 1.任意一节点指针i:父节点:i==0?null:(i-1)/ 2 左孩子:2*i + 1 右孩子:2*i + 2 2原创 2017-10-07 09:23:31 · 207 阅读 · 0 评论 -
排序算法-希尔排序
希尔排序实际上是插入排序的优化,根据分组从而实现插入排序的最优 public void shellsort1(int a[], int n){ int grap, i, j, temp; // 每次为原来的一半 for (grap = n/2; grap > 0; grap /= 2){ for (i = grap; i ; i++){原创 2017-09-02 15:21:10 · 166 阅读 · 0 评论 -
排序算法-插入排序
插入排序不是通过交换位置而是通过比较找到合适的位置插入元素来达到排序的目的的。 这个原理其实和插入排序是一样的。举个栗子,对5,3,8,6,4这个无序序列进行简单插入排序,首先假设第一个数的位置时正确的,想一下在拿到第一张牌的时候,没必要整理。然后3要插到5前面,把5后移一位,变成3,5,8,6,4.想一下整理牌的时候应该也是这样吧。然后8不用动,6插在8前面,8后移一位,4插在5前面,从5开始...原创 2017-08-30 22:54:45 · 155 阅读 · 0 评论 -
排序算法-冒泡排序
冒泡排序的基本思想:比较两个相邻的元素,交换顺序 假设【12、35、99、18、76】 第一次:35 12 99 18 76 第二次:35 99 12 18 76 第三次:35 99 18 12 76 第四次:35 99 18 76 12 此时最小数已经排好序了 public void BubbleSort(int[] a, int n){ for(int原创 2017-08-29 20:45:31 · 255 阅读 · 0 评论 -
排序算法-快速排序
排序算法的平均时间复杂度为O(Nlogn),最差时间复杂度为O(n2) 以下是个人对快速排序法的理解和代码。针对高效率的快速排序算法还有待研究 /** * 快速排序法 */ public void quickSort(int[]a, int left, int right){ int i,j,t,temp; if(left>right原创 2017-08-28 23:03:28 · 357 阅读 · 0 评论 -
选择排序
插入排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间,但是选择排序每次都会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。 代码如下: /** * 插入排序 * @param arrays */ public void sort(int[] arrays) { if (arrays == null) { retur...原创 2019-02-04 10:05:32 · 92 阅读 · 0 评论 -
排序算法-归并排序
归并排序的主要思想是分而治之,将一个大问题分解成小的子问题来解决。是一种十分高效的稳定排序算法,而且,归并排序的最好,最坏,平均时间复杂度均为O(nlogn) 比如[11, 8, 3, 9, 7, 1, 2, 5] 采用递归的方法实现归并排序,递归深度为log2n /** * 归并排序 * @param arrays */ public void sort(int[] arr...原创 2019-02-06 17:54:11 · 109 阅读 · 0 评论