自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(6)
  • 收藏
  • 关注

原创 Java调用Python脚本并获取返回值

在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError。在这种情况下可以采用另一种方法:使用Java的Runtime,像在命令行直接调用python脚本那样调用python程序。此时可以通过文件作为脚本参数来传递Python程序所需要的参数,并从脚本的输入输出

2017-05-24 11:39:09 25927 12

原创 基于堆的优先队列及堆排序

许多应用程序需要处理有序的元素,例如事件循环中要先处理高的事件。在这种情况下,我们设计的数据结构需要支持两种操作:删除最大元素和插入元素,这种数据类型就叫做优先队列,它可以用来解决TopM问题(找出M个最大的元素)或者多向归并问题(将多个有序的输出流合并成一个有序的输出流),在这两种情况下,问题的输入都可能是无限的,不可能先读取所有输入再进行排序,而优先队列适合解决这种问题。先来看一下堆的概念,堆是

2017-05-17 22:38:14 1012

原创 单链表的快速排序

一般情况下快速排序采用的数据结构是数组,数组可以随机存取,如果采用单链表,由于只有一个头节点,所以和数组的快速排序有一些不一样的地方,主要还是切分的方法不同。在单链表的快速排序中,可以使用两个指针,p和q,p和q开始时都在子数组的开头,其中p=start,q=p.next。同样地,选择start节点的数值作为切分元素,需要满足以下条件:start和指针p之间的元素值要小于切分元素p和q之间的元素

2017-05-17 13:44:31 1287 1

原创 快速排序及一些优化

快速排序也是一种递归的排序算法,它把数组分成两个子数组然后独立地排序。快速排序和归并排序的区别在于,归并排序是将将两个子数组分别进行排序之后归并到一起;而快速排序则是当两个子数组都是有序的时候自然整个数组就有序了。在归并排序时,递归调用发生在处理整个数组之前;在快速排序中,递归调用发生在处理整个数组之后。在归并排序中,数组被整分成两半,而在快速排序中,数组切分的位置取决于数组的内容。民快速排序的关键

2017-05-16 21:51:51 939

原创 归并排序及一些优化

归并排序是一种递归的排序方法,它把两个有序的数组归并成一个更大的有序数组。要将一个数组排序,可以先将它分成两半分别排序,然后再将结果归并起来。归并排序的复杂度是O(NlogN),不过需要额外的N空间。归并排序有两种方法,一种是自顶向下的方法,一种是自底向上的方法。先来看一下自顶向下的方法:public class Merge { public static void merge(Compara

2017-05-15 21:19:06 1252

原创 插入排序及哨兵的作用

插入排序的做法是每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。与选择排序一样,当前索引的左边的元素是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。当索引到达数组的右端时,排序完成。public class Sort { private static void swap(Comparable[] a, int i, int j) {

2017-05-14 18:49:54 5712 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除