- 浏览: 428515 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 749个人原创博客:spring boot应用测试框架介绍 -
可执行jar包的配置与运行
2017-06-04 19:42 1006spring boot项目可以以jar包的形式执行运行。s ... -
多线程并发
2016-05-21 23:49 0Splitter.on('|').trimResults(). ... -
jdk动态代理实现原理
2016-05-09 23:12 773jdk的动态代理即使用反射来实现,具体由Proxy、Invoc ... -
spring常见注解
2016-05-01 23:33 12321.Autowired 通过spring的依赖注入功能来 ... -
spring常见配置作用
2016-04-29 23:08 933一般应用中常见spring的 ... -
数据来自两个系统时的内存分页算法
2016-04-24 23:12 842业务数据来自a-app与b-app,其中a-app中数据的业务 ... -
linux下java web开发环境搭建
2016-04-10 14:09 1134一般的java web开发涉及到的开发工具有:jdk、tomc ... -
linux下md5sum和DigestUtils.md5Hex的关系
2015-12-19 22:30 8518本文对linux下md5sum命令和java中DigestUt ... -
基于jersey的web service
2015-11-22 22:55 1006本文是基于jersey的web service 的两个小例子, ... -
面试总结----spring
2015-05-19 22:17 910spring在面试中经常被 ... -
面试总结----多线程
2015-05-18 22:10 895面试过程中,多线程被问到的概率非常大,差不多都会问的。 下面 ... -
面试总结----java虚拟机
2015-05-17 23:20 740在面试过程中,java虚拟机被问到的概率非常大,应该是每场面试 ... -
面试总结----java集合
2015-05-17 11:57 675春节刚过,打算换一份工作,于是就开始了一段准备面试的生活,准备 ... -
json串与对象之间转换的几种实现方式
2015-01-24 18:56 1878这里使用了gson,fastjson,jackson,json ... -
google关于事件的生产者消费者模式实现例子
2015-01-24 11:28 975google使用生产者/消费者模式实现了事件的产生传播处理过程 ... -
多线程----wait/notify
2014-11-06 22:06 684线程同步:两个线程依次对同一变量进行操作。 packag ... -
多线程-----阻塞队列
2014-11-05 22:43 848使用一个线程将一个指定目录下面的所有文件放在一个阻塞队列中,用 ... -
迷宫的最短路径
2014-08-19 00:31 3761代码如下: package com.chapterO ... -
深度优先遍历------部分和问题
2014-08-15 20:15 517代码如下: package com.chapterO ...
相关推荐
《冒泡排序与快速排序的交互动画》课程设计是一个基于Java编程语言的项目,它通过图形化的方式展示了这两种基础排序算法的工作原理。这个项目利用了JavaFX库,这是一个强大的工具,可以创建丰富的用户界面和交互式...
少儿编程的算法比较少,这个Scratch文件结合了数据结构里的经典算法——冒泡排序,给出了实现过程。把少儿编程与算法结合到了一起
在Android应用中实现图形化排序算法,首先需要了解各种基本的排序算法,例如冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序等。这些算法各有特点,如冒泡排序的时间复杂度为O(n^2),适用于小规模数据...
例如,通过动态显示冒泡排序过程中元素的交换,用户可以清晰地看到数据如何一步步调整到正确的位置。同样,快速排序的划分过程也可以通过界面生动展示,帮助用户理解“分区”和“递归”的概念。 此外,该项目还允许...
冒泡排序是一种基础且经典的排序算法,它的主要思想是通过不断地交换相邻的逆序元素,逐渐将较大的元素“冒”到数组的后端,从而实现整个序列的有序化。在这个过程中,每一遍的冒泡都会确保当前未排序部分的最大元素...
冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻元素并交换位置来达到排序的目的。在Visual Basic环境下实现冒泡排序,可以加深对编程逻辑和算法的理解。本实验旨在帮助国家开放大学的学生掌握...
在IT领域,图形用户界面(GUI,Graphical User Interface)是一种通过图标、窗口和菜单等可视化元素与用户交互的方式,极大地提高了用户操作的便捷性。本项目“图形界面-排序”是一个基于Java语言实现的简单GUI程序...
冒泡排序是一种基础且直观的排序算法,常用于教学目的,其主要原理是通过重复遍历待排序的序列,比较相邻元素...通过调试和分析这个程序,你可以更深入地了解冒泡排序的工作原理,以及如何利用MFC来构建图形用户界面。
在动态演示冒泡排序的过程中,可能需要利用某种图形库或者窗口系统,例如Windows上的`GDI`或跨平台的`SFML`、`Qt`等,来绘制数组元素并实时更新它们的位置。每一轮排序后,数组的状态会被绘制出来,用户可以看到元素...
另一个文件"冒泡排序-视窗版"可能是源代码文件,可能是`.cs`(C#)或`.vb`(Visual Basic)格式,其中包含了冒泡排序的具体实现。 冒泡排序的算法步骤如下: 1. **初始化**:遍历整个数组,从第一个元素开始。 2. ...
冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,逐步将较大的元素“冒”到序列的后端,较小的元素“沉”到前端,从而实现整个序列的有序化。在本文中,我们将深入探讨冒泡排序的...
在这个“vue项目实现的冒泡排序可视化”中,开发者利用Vue.js框架,将这个算法的运行过程以图形化的方式呈现,帮助学习者更好地理解冒泡排序的工作原理。 Vue.js是JavaScript的一种轻量级前端框架,它提供了声明式...
程序框图则是VI的逻辑实现,使用图形化编程节点来表示各种操作,包括队列操作和冒泡排序的逻辑。 在实际应用中,"队列冒泡排序VI" 可以作为模块化组件,与其他labVIEW程序集成,提供排序功能。对于需要频繁排序但不...
在这个少儿编程的Scratch项目中,孩子们将通过可视化的方式学习冒泡排序的原理。 在Scratch编程环境中,冒泡排序通常会用到一系列的积木块来实现。首先,我们需要一个包含待排序数字的列表。列表中的每个数字都会被...
例如,对于“排序”按钮,你需要创建一个按钮控件,并为其关联一个ON_BN_CLICKED消息处理函数,在这个函数中调用冒泡排序算法并显示结果。 5. **MFC应用结构**:在MFC程序中,应用程序通常从CWinApp派生,对话框从...
在这个项目中,我们将使用Scratch这种图形化编程语言来演示冒泡排序的过程。 Scratch是麻省理工学院(MIT)的“终身幼儿园团队”开发的一款面向儿童的编程工具,它以积木块的形式让编程变得直观易懂。在"bubble sort...
在编程领域,冒泡排序是一种基础且直观的排序算法,尤其在LabVIEW这种图形化编程环境中,它可以通过直观的流程图来实现。本教程将详细讲解如何利用LabVIEW的事件结构来实现冒泡排序功能。 首先,理解冒泡排序的基本...
### 冒泡排序单步演示知识点解析 ...通过以上分析可以看出,这段代码实现了冒泡排序的可视化演示,不仅展示了冒泡排序的基本思想,还结合了图形用户界面,使得学习者能够更好地理解冒泡排序的过程。
至于“pic”文件,可能是包含与冒泡排序相关的图形或动画,用以辅助解释排序的过程,使用户更容易理解冒泡排序的工作方式。这些图像可能显示了数组在每一轮比较后的状态变化,直观地展示元素如何逐步达到正确的位置...
在Scratch2这个图形化编程环境中,我们可以用积木块来实现冒泡排序算法,这有助于初学者理解排序算法的工作原理。 首先,我们要明确冒泡排序的基本步骤: 1. **初始遍历**:从列表的第一个元素开始,比较它与下一个...