![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
包华杰
java开发工程师
展开
-
常用排序算法
常用排序算法 1、几种常用排序算法 2、排序算法时间空间复杂度 转眼间已经毕业5个月了,在这几个月的工作中,有忙碌的时候也有清闲的时候,清闲时总是想找点事情做,但是又不知道做什么,后来想到了写技术博客这条路,通过写博客一方面可以将自己学到的东西记录下来便于以后参考,另一方面可以和大家分享、讨论一些技术问题,或许还可以在社区中认识到一些大神。毕竟博主才刚刚毕业几个月,还原创 2017-12-02 12:10:50 · 228 阅读 · 0 评论 -
常用排序算法之归并
归并排序 一、思想:假设有待排序列R[0,……,n-1],首先将R[0,……,n-1]看成n个长度为1的有序表,将相邻的有序表成对归并,得到n/2个长度为2的有序表,然后再将这些有序表成对归并得到n/4个长度为的有序表,如此反复的进行下去,最后得到一个长度为n的有序表。 二、一次归并排序的代码如下: // 一次归并排序 public static void merge(int[] arra原创 2018-01-06 11:51:36 · 215 阅读 · 0 评论 -
常用排序算法之快速排序
快速排序 1、这里引用一下赵坚、姜梅主编的《数据结构(C语言版)》中的快速排序原理和过程。 2、代码实现 package baohuajie.sort; import java.util.Arrays; public class QuickSort { public static void quickSort(int[] array, int left,翻译 2017-12-17 19:48:12 · 193 阅读 · 0 评论 -
常用排序算法之直接插入排序
直接插入排序 插入排序可以分为直接插入排序、折半插入排序、希尔排序,他们的时间和空间复杂度请参考上一篇博客点击打开链接,本篇文章将介绍插入排序方法中的直接插入排序。 1、思想:直接插入排序的思想就是依次将元素插入到一个有序序列中。假设有待排序列R[0,i-1],将其分为两部分:有序区R[0,j-1],无序区R[j,i-1],如图1所示。排序的过程就是将无序区R[j,i-1]中的原创 2017-12-02 17:27:51 · 354 阅读 · 0 评论 -
常用排序算法之折半插入排序
折半插入排序 1、思想:折半插入排序将序列分为两部分,有序区R[0,j-1],无序区R[j,i-1]。将无序区中的元素插入有序区中的方法是通过折半的方式在有序区中查找插入的位置。假设有待排序列{ 8, 6, 9, 5, 4, 12, 7,11,10 },经过几次排序后的某种情况如图1所示。 图1 2、代码实现(java) package sort.原创 2017-12-03 00:40:06 · 737 阅读 · 0 评论 -
常用排序算法之希尔排序
希尔排序 1、思想:希尔排序和直接插入排序很相似,希尔排序是在直接插入排序的基础上进行改进,将待排序列按增量d(一般d的初始值为d=array.length/2)分为诺干组,分别在每个组内进行直接插入排序,然后将增量d按照一定的规则减小(一般按照d=d/2的规则减小)。所以,这里我们可以参考以前的一篇文章“常用排序算法之直接插入排序”,希尔排序的代码也是在这篇文章代码之上修改而来的。原创 2017-12-03 11:12:37 · 233 阅读 · 0 评论 -
常用排序算法之冒泡排序
冒泡排序 前几篇博文介绍了插入排序的三种算法:直接插入排序、折半插入排序、希尔排序。接下来介绍交换排序的两种方法:冒泡排序、快速排序,本篇博文介绍的是冒泡排序。 1、思想:冒泡排序的思想就是相邻的两个元素做比较,将值大的元素放在后面,小的放在前面。假设现有待排序列:{ 52, 38, 47, 24, 69, 05, 17, 38 }。第一次排序的过程如图1,第二次排序的过程如图原创 2017-12-09 08:50:03 · 560 阅读 · 0 评论 -
常用排序算法之基数排序
基数排序 一、算法过程 二、代码实现 package baohuajie.sort; import java.util.Arrays; public class RadixSort { public static void main(String[] args) { int[] array = { 52, 38, 47, 24, 69, 05, 17, 38 };原创 2018-01-06 14:47:02 · 190 阅读 · 0 评论