Java数据结构—排序算法
振哥在,世界充满爱!
计划+坚持!+思考
展开
-
Java基本排序实现--插入排序,选择排序,冒泡排序
一、插入排序//插入排序算法的伪代码//insertionsort(data[]){// fori=1 to data.length-1// temp = data[i];// 将所有大于temp的元素data[i]移动一个位置// 把temp放到正确的位置上//}public static void main(int[] dat原创 2016-05-10 10:30:14 · 555 阅读 · 0 评论 -
Java实现-二叉树定义树结点及创建
public static class TreeNode{int val;TreeNode leftchild;TreeNode rightchild;public TreeNode(int data){this.val = data;}}//创建二叉树,并且返回根节点public TreeNode createBTree(){TreeNode root =原创 2016-05-18 11:23:15 · 5719 阅读 · 2 评论 -
Java实现-二叉树先序,中序,后序遍历及递归,非递归遍历
对于二叉树的遍历一共存在两种类型:递归遍历和非递归遍历,针对每种类型有分为先序遍历,中序遍历和后序遍历。以下是六种遍历执行过程。//先序遍历二叉树(递归形式)public List preOrder1(TreeNode root){if( root != null){reslist.add(root.val);System.out.print(root.val+";");p原创 2016-05-19 08:56:47 · 805 阅读 · 0 评论 -
鸡尾酒混合排序和慢排序
1、鸡尾酒混合排序(Cocktail Shaker Sort)算法思想: 鸡尾酒混合排序时冒泡排序的一种变形,在每次迭代后要改变冒泡的方向。第一趟排序是将最小元素冒泡浮上来;第二趟排序是将最大元素沉下去;第三趟排序是将次小元素冒泡浮上来;... ... 以此类推,直到排序完成。2、慢排序(Slow Sort)算法思想: 对n元数组中每隔i的元素使用选择排序,i的值是n/2,原创 2016-05-15 09:10:31 · 1019 阅读 · 0 评论 -
Java实现-高效排序算法之基数排序
1、基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。2、算法的伪代码和排序方法如下所示(其中方法是实现对整数的排序方式)。// 基数排序的伪代码// RadixSort()// for d = 1 to 最长数字的最左边数字所在的位置// 根据第d位数字将所有的数字分别分配到堆0至堆9中;// 将所有证书放进一个数组中;原创 2016-05-14 22:30:58 · 360 阅读 · 0 评论 -
Java实现-高效排序算法之归并排序
1、归并排序是Java.util.Collections类中包装的排序方法。2、归并排序的设计思想:是将一个数组的两个有序的部分合并成一个有序数组,其算法的本质也是依靠递归来实现的。3、归并排序的缺陷:在于需要额外的存储空间来合并数组。在归并排序的过程中必须使用一个临时数组,归并结束后,在将这个临时数组的内容传递给原数组。4、归并过程的伪代码如下所示:mergesort(data,原创 2016-05-14 20:48:20 · 432 阅读 · 0 评论 -
Java实现-高效排序算法之堆排序
堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。在处理堆排序时面临两个问题:一个是如何建堆。另一个是如何在输出堆顶后进行调整,成为一个新堆。建堆的过程主要是通过在n/2(取下限)处开始,反复进行“筛选”的过程。具体过程见算法分析及注释。//堆排序的伪代码//heapsort(data[])// data转变成一个堆;// for i =原创 2016-05-12 22:29:00 · 338 阅读 · 0 评论 -
Java实现-高效排序算法之Shell排序
Shell排序又称为渐进增量排序法。Shell排序算法思想是:先将这个待排记录序列分割成为若干子序列(子数组)分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。说明:对每个“增量”h进行一次排序成为“一趟希尔排序”。“一趟希尔排序”中包含多次子数组的排序。(这样命名,便于理解注释的内容)//Shell排序的伪代码//把data分成h个原创 2016-05-12 07:17:16 · 514 阅读 · 1 评论 -
两个整数值的交互
要求:实现两个整数值进行互换,不能使用第三个变量值。 int n1 = 10; int n2 = 20; n1 = n1 - n2;//n1=-10 n2 = n1 + n2;//n2=10 n1 = n2 - n1;//n1=20通过上述三个表达式的转换输原创 2016-04-29 17:18:07 · 501 阅读 · 0 评论 -
Java实现-高效排序算法之快速排序
快速排序时对冒泡排序的一种改进。实现思想:通过一趟排序将待排序记录(数组)分割成独立的两部分,其中一部分的元素均比另一部分的元素要小,则可以对这两部分记录继续进行排序,从而达到整个序列有序。实现的本质是对递归的应用。步骤一:找一个枢轴。最好的情况是找一个能够使两侧子数组的数目相等的元素。步骤二:扫描数组,并将元素分配到两个子数组中。//quicksort(Object[] arra原创 2016-05-13 17:20:46 · 662 阅读 · 0 评论