- 浏览: 422181 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (170)
- java (77)
- javascript (5)
- jsp (1)
- servlet (6)
- struts (8)
- hibernate (3)
- spring (4)
- ajax (5)
- jquery (3)
- apache cxf (0)
- ext.js (1)
- hadoop (0)
- android (0)
- html5 (2)
- linux (5)
- flex (1)
- tomcat (1)
- jboss (0)
- nginx (0)
- mysql (16)
- sql server (3)
- oracle (4)
- div+css (0)
- mybatis (4)
- design patterns (22)
- xml (2)
- postgresql (3)
- velocity (1)
- freemarker (1)
- kendo-ui (2)
- ibatis (1)
- socket (1)
- C and C++ (1)
- C# (2)
- 程序设计----算法 (0)
- jersey (1)
- dd (0)
- perl (1)
- shell (0)
最新评论
-
书策稠浊:
兄弟,这tm是Java?
java调用百度地图和谷歌地图 -
fengyunlouyanyu:
jquery----删除指定id的div下的img -
yangjianzhouctgu:
Neoman 写道hi,我看你引入了kendo.web.min ...
kendo-ui中kendoGrid的用法 -
Neoman:
hi,我看你引入了kendo.web.min.js 这个js, ...
kendo-ui中kendoGrid的用法 -
yangjianzhouctgu:
llscp 写道这是JS吧...对的呀
java调用百度地图和谷歌地图
代码:
显示效果:
package com.thread.singal; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Rectangle2D; import java.util.concurrent.Semaphore; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; /** * * @author yangjianzhou * @description TODO * @time Dec 5, 2014 : 8:17:30 PM */ public class AlgorithmAnimation { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new AnimationFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class AnimationFrame extends JFrame { /** * */ private static final long serialVersionUID = 1L; private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 300; /** * set layout */ public AnimationFrame() { ArrayComponent comp = new ArrayComponent(); add(comp, BorderLayout.CENTER); final Sorter sorter = new Sorter(comp); JButton runButton = new JButton("Run"); runButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { sorter.setRun(); } }); JButton stepButton = new JButton("Step"); stepButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { sorter.setStep(); } }); JPanel buttons = new JPanel(); buttons.add(runButton); buttons.add(stepButton); add(buttons, BorderLayout.NORTH); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); this.setTitle("Bubble Sort"); Thread t = new Thread(sorter); t.start(); } } class Sorter implements Runnable { private Double[] values; private ArrayComponent component; private Semaphore gate; private static final int DELAY = 100; private volatile boolean run; private static final int VALUES_LENGTH = 30; /* init data */ public Sorter(ArrayComponent comp) { values = new Double[VALUES_LENGTH]; for (int i = 0; i < values.length; i++) { values[i] = new Double(Math.random()); } this.component = comp; this.gate = new Semaphore(1); this.run = false; } /** * sort in one time */ public void setRun() { run = true; gate.release(); } /** * sort step by step */ public void setStep() { run = false; gate.release(); } public void run() { component.setValues(values, values[0]); sort(values); component.setValues(values, null); } /** * bub sort * * @param values */ public void sort(Double[] values) { int len = values.length; Double temp; for (int i = 0; i < len; i++) { for (int j = len - 1; j > i; j--) { if (values[j] < values[j - 1]) { temp = values[j - 1]; values[j - 1] = values[j]; values[j] = temp; component.setValues(values, values[j - 1]); try { if (run) { // show the draw process Thread.sleep(DELAY); } else { gate.acquire(); } } catch (InterruptedException exception) { Thread.currentThread().interrupt(); } } } } } } class ArrayComponent extends JComponent { /** * */ private static final long serialVersionUID = 1L; private Double marked; private Double[] values; public synchronized void setValues(Double[] values, Double marked) { this.values = values; this.marked = marked; repaint(); } /** * paint the bars */ public synchronized void paintComponent(Graphics g) { if (values == null) { return; } Graphics2D g2 = (Graphics2D) g; int width = getWidth() / values.length; int compHeight = getHeight(); for (int i = 0; i < values.length; i++) { double height = values[i] * getHeight(); Rectangle2D bar = new Rectangle2D.Double(width * i, compHeight - height, width, height); if (values[i] == marked) { g2.fill(bar); } else { g2.draw(bar); } } } }
显示效果:
发表评论
-
spring boot应用测试框架介绍
2018-07-19 14:44 701个人原创博客:spring boot应用测试框架介绍 -
可执行jar包的配置与运行
2017-06-04 19:42 964spring boot项目可以以jar包的形式执行运行。s ... -
多线程并发
2016-05-21 23:49 0Splitter.on('|').trimResults(). ... -
jdk动态代理实现原理
2016-05-09 23:12 719jdk的动态代理即使用反射来实现,具体由Proxy、Invoc ... -
spring常见注解
2016-05-01 23:33 11821.Autowired 通过spring的依赖注入功能来 ... -
spring常见配置作用
2016-04-29 23:08 894一般应用中常见spring的 ... -
数据来自两个系统时的内存分页算法
2016-04-24 23:12 788业务数据来自a-app与b-app,其中a-app中数据的业务 ... -
linux下java web开发环境搭建
2016-04-10 14:09 1098一般的java web开发涉及到的开发工具有:jdk、tomc ... -
linux下md5sum和DigestUtils.md5Hex的关系
2015-12-19 22:30 8448本文对linux下md5sum命令和java中DigestUt ... -
基于jersey的web service
2015-11-22 22:55 971本文是基于jersey的web service 的两个小例子, ... -
面试总结----spring
2015-05-19 22:17 870spring在面试中经常被 ... -
面试总结----多线程
2015-05-18 22:10 861面试过程中,多线程被问到的概率非常大,差不多都会问的。 下面 ... -
面试总结----java虚拟机
2015-05-17 23:20 715在面试过程中,java虚拟机被问到的概率非常大,应该是每场面试 ... -
面试总结----java集合
2015-05-17 11:57 632春节刚过,打算换一份工作,于是就开始了一段准备面试的生活,准备 ... -
json串与对象之间转换的几种实现方式
2015-01-24 18:56 1836这里使用了gson,fastjson,jackson,json ... -
google关于事件的生产者消费者模式实现例子
2015-01-24 11:28 928google使用生产者/消费者模式实现了事件的产生传播处理过程 ... -
多线程----wait/notify
2014-11-06 22:06 652线程同步:两个线程依次对同一变量进行操作。 packag ... -
多线程-----阻塞队列
2014-11-05 22:43 807使用一个线程将一个指定目录下面的所有文件放在一个阻塞队列中,用 ... -
迷宫的最短路径
2014-08-19 00:31 3732代码如下: package com.chapterO ... -
深度优先遍历------部分和问题
2014-08-15 20:15 476代码如下: package com.chapterO ...
相关推荐
少儿编程的算法比较少,这个Scratch文件结合了数据结构里的经典算法——冒泡排序,给出了实现过程。把少儿编程与算法结合到了一起
Java语言实现冒泡排序和快速排序的交互动画,是我的课程设计,内附文档ppt以及源码,可以直接运行。利用javafx中的柱状图进行实现。
数据结构内部排序的C++源代码,有冒泡法,快速排序,插入排序等六种方法可供选择,并且可以选择查看第几次排序的结果,好用且实用。用mfc实现图形化界面,方便交互输入。
创建一个基于对话框的应用程序,在客户区显示待排序的元素,点击“开始排序”按钮,开始演示每一轮各元素比较交换的过程。
快速排序:快速排序以及其他排序方法。 用Objective-C实现几种基本的排序算法,并把排序的过程图形化显示
提供插入排序,选择排序,冒泡排序三种排序方法,对数据进行排序,并可以在图形界面演示排序过程。 执行语句:java sort <输入方式> <图形界面/非图形界面选择> <待排序数列> 例: java sort 0 643 323 12 3 523 23 ...
1. 该程序为一个可以展示不同排序算法的排序过程动画,... 一共有三种排序方法——直接插入排序、直接选择排序和冒泡排序快速排序,; 3. 排序元素输入为手动输入; 4. 有进度条显示排序的进度; 5. IDE:Eclipse
用户可以选择排序算法,例如冒泡排序,选择排序,插入排序,快速排序等,使用排序可视化工具将其可视化。这是使用flutter框架构建的简单排序可视化应用程序。 用户可以选择排序算法,例如冒泡排序,选择排序,插入...
采用四种排序算法——直接插入排序、直接选择排序、冒泡排序和快速排序,四种排序并发运行,因而在排序数据量较大的情况下可以直观体现四种排序算法之间的性能差异; 3. 排序元素输入有三种方式:1)手动输入;2)...
排序数据随机产生,针对随机案例,对冒泡排序、箱子排序、堆排序、归并算法,提供排序执行过程的动态图形演示。
项目简介 HTML + Javascript 实现冒泡排序过程图形化展示
常用排序算法的动态演示系统的开发,演示冒泡排序法、快速排序法、直接插入排序法、折半插入排序法、树形选择排序法
各种数据结构中的排序MFC,快排,堆排序,组合排序,冒泡等
用flash方式演示各种数据结构基础算法3——排序部分,很直观,...里面包括:堆排序.swf,规并排序.swf,基数排序.swf,快速排序.swf,冒泡排序.swf,桶式排序法.swf,希尔排序.swf,直接插入排序.swf,直接选择排序.swf
简单排序包括:选择排序,插入排序,折半插入排序,冒泡排序。 分治思想的排序包括:归并排序,快速排序,堆排序。 程序把随机生成的整数进行排序,开始时用1到7选择用哪种排序(没有图形界面,算法为主),堆排序...
-----简单代码源代码...本实验工程用图形显示了四种常见排序算法的效率,包括快速排序、合并排序、选择排序和冒泡排序。可以直观的看到冒泡排序的效率非常低下,还不如选择排序!(请用visual studio 2008打开工程)
C#语言实现的排序算法 快速排序 选择排序 冒泡排序 合并排序,具有图形化的界面。
包括图形化界面,冒泡、选择、快速排序、希儿排序、插入排序
八大排序方法详细图形解释,和算法复杂度分析,及最后总结。 1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序
冒泡排序 数值转换 行指针、列指针 形状--打印菱形 指针做冒泡排序 6.5指针函数 6.7用指针显示二维数组 7.1文件操作 7.2文件信息提取 8指针和数组格式例子 9函数指针 C++: C++_02_构造和析构 C++_03.6_继承和派生...