直接选择排序算法:从待排序的数据元素集合中选取最小的元素放到原始数据的第一个元素的位置上。然后不包括第一个元素的数据元素集合中找到最小的元素放到此集合中,依次类推,即可完成排序。
算法实现如下:
/**
* 直接选择排序
* @param a 用于排序的数组
* */
public void selectSort(double[] a){
for(int i = 0; i < a.length -1; i ++){
int smallIndex = i;
for(int j = i;j < a.length; j ++){//找到最小的值及其下标位置
if(a[j] < a[smallIndex]){
smallIndex = j;
}
}
if( i != smallIndex ){//将最小元素放到当前i位置,将i位置元素放到最小元素的位置,完成交换
double temp = a[i];
a[i] = a[smallIndex];
a[smallIndex] = temp;
}
}
}
如果每次排序后将数据元素依次后移就可以避免同一元素后移带来的排序方式不稳定的问题。 ......
Lucene是一个基于Java的全文索引工具包。
基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史
全文检索的实现:Luene全文索引和数据库索引的比较
中文切分词机制简介:基于词库和自动切分词算法的比较
具体的安装和使用简介:系统结构介绍和演示
Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展
从Lucene我们还可以学到什么
另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且内置了对简单的分布式检索的支持;
基于Java的全文索引/检索引擎——Lucene
Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
Lucene的发展历程:早先发布在作者自己的www.lucene.com,后 ......
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Terris extends JFrame implements Runnable, KeyListener {
private short isPlaying=0,xOffSet = 2, yOffSet = 0, blockType = (short) Math.round(Math.random() * 6), blockRotation = 0, blockColor = (short) Math.round(Math.random() * 5);
private short matrix[][] = new short[21][10];//
private short block[][][][] = {{{ { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 },{ 0, 1, 0, 0 } },/* l */{ { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 0, 0, 0, 0 },{ 0, 0, 0, 0 } } },/*-*/{{ { 0, 0, 0, 0 }, { 1, 1, 0, 0 }, { 0, 1, 1, 0 },{ 0, 0, 0, 0 } },/* z */{ { 0, 0, 0, 0 }, { 0, 0, 1, 0 }, { 0, 1, 1, 0 },{ 0, 1, 0, 0 } } },/* z| */{{ { 0, 0, 0, 0 }, { 0, 1, 1, 0 }, { 1, 1, 0, 0 },{ 0, 0, 0, 0 } },/* xz */{ { 0, 1, 0, 0 }, { 0, 1, 1, 0 }, { 0, 0, 1, 0 },{ 0, 0, 0, 0 } } },/* xz| */{ { { 0, 0, 0, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 0, 0, 0 } } },/** []*/{{ { 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 },{ 0, 0, 0, 0 } },{ { 0, ......
UDP协议基础:
UDP(User Datagram
Protocol)是一种无连接协议,与TCP操作不同,计算机间并不需要建立一个连接,同时,一个UDP应用可同时作为应用的客户或服务器方。
由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。在TCP应用中,一个Winsock控制必须明确地设置成“监听”,而其它Winsock控制则必须使用Connect方法来初始一个连接。
使用UDP协议,在两个Winsock控制间进行数据的发送,在连接的两端必须完成以下三步:
1.设置RemoteHost属性为其它计算机的名称;
2.设置RemotePort属性为第二个Winsock控制的LocalPort属性的值;
3.申请Bind方法。
通过使用方法Bind,则可将该Winsock控制捆绑到一个本地端口,以便该Winsock控制使用该端口来进行类似TCP的“监听”功能,并防止其它应用使用该端口。
使用该协议传送数据,首先设置客户计算机的LocalPort属性。而作为服务器的计算机仅需要设置RemoteHost属性为客户计算机的IP地址或域名即可,并将其RemotePort属性设置成客户计算机上的LocalPort属性即可,然后就可通过申请SendData方法来开始信息发送,客户计算机则 ......
题目:一家小型航空公司刚刚购买了一台计算机,以使用新的机票自动预订系统,这家公司要求我们开发这个新系统。我们需要编写一个应用程序,对这家航空公司唯一的一架飞机(容量为10个座位)的每个航班分配座位。这个应用程序应该输入下面这些选项:请输入1选择头等舱和请输入2选择经济舱。如果用户输入1,应用程序应该分配一个位于头等舱的座位(座位1~5)。如果用户输入2,应用程序应该分配一个位于经济舱的座位(座位6~10)。然后,这个应用程序应该显示一张登机证,注明用户的座位号码及它位于飞机上的头等舱还是经济舱。
使用一个基本类型Boolean的一维数组来表示这张飞机的座位图。把这个数组的所有元素初始化为false,表示这些座位都是空的。分配每个座位后,把对应的数组元素设置为True,表示这个座位已经被预订。这个应用程序不能分配已经被分配的座位。当经济舱满员之后,应用程序应该询问用户是否接受头等舱(反之亦然)。如果是,就进行适当的座位分配。如果不是,就显示信息“下一航班在3小时之后”
Public Class flight
Dim seats As Boolean() = New Boolean(9) {False, False, False, False, False, False, False, False, False, False}
......
phpRPC + Ruby + Arduino = 遠程控制LED開關(?)
嗯,我知道這是個很無聊的Sample :P
關於phpRPC與Arduino請自行Google
觀看此demo之前請先安裝另外一篇所提到的serialport
與另外一個Gem
套件:phprpc
在這個範例中,我透過PHPRPC建立一個Server,並且透過RPC呼叫一些method去控制USB Serial Port
而在實現這個demo時,我們必須建立Server&Client兩端
底下是Source code:
複製內容到剪貼板
代碼:
# Server
#!/usr/bin/env ruby
require 'rubygems'
require 'serialport'
require 'phprpc'
class Cloud
def initialize
@@sp ||= SerialPort.new("/dev/cu.usb
serial-A600bMiv", {:baudrate => 9600})
end
def write(color)
@@sp.write("##{color}")
end
def close
  ......