当前位置:  编程技术>综合
本页文章导读:
    ▪简单排序算法        冒泡排序: import java.util.Arrays; public class Bubbling { /** * @param args * 冒泡排序: * * 假设有 N 个数据需要排序,则从第 0 个数开始,依次比较第 0 和第 1 个数据, *如果第 0 .........
    ▪Modbus 通讯命令说明      仪表可以采用Modbus-RTU模式进行上位机通讯,协议格式为:8个数据位、1个停止位、无校验位,发送接收数据都是以十六进制格式进行。   1、发送数据格式 发送字节 1 2 3 .........
    ▪关于label标签与表单控件的显式联系和隐式联系      在html中,<label> 标签为 input 元素定义标签(我称之为输入提示)。 label 元素不会向用户呈现任何特殊效果。它为鼠标用户改进了可用性。如果在 label 元素内点击文本,就会触发此input控.........

[1]简单排序算法
    来源: 互联网  发布时间: 2013-11-10

 

冒泡排序:

import java.util.Arrays;


public class Bubbling {

	/**
	 * @param args
	 * 冒泡排序:
	 *
         * 假设有 N 个数据需要排序,则从第 0 个数开始,依次比较第 0 和第 1 个数据, 

	 *如果第 0 个大于第 1 个则两者交换,否则什么动作都不做,继续比较第 1 个第 2 

	 *个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。  
	 * 冒泡排序的效率O(N*N),比较 N*N/2,交换 N*N/4;  
	 *
	 */
	
	public int[] result(int[] array){   //int型可以换成是Object,但数组元素必须实现compareto()方法。
		if(array.length==0){
			return array;
		}else{
			int length,temp;
			length = array.length;
			
			for(int i=1;i<length;i++){
				for(int a=0;a<length-i;a++){
					if(array[a]>array[a+1]){
						temp =array[a];
						array[a]=array[a+1];
						array[a+1]=temp;
					}
				}
			}
			
			
		}
		
		return array;
	}
	public static void main(String[] args) {
		int[] a =new int[5];
		a[0]=1;
		a[1]=5;
		a[2]=3;
		a[3]=0;
		a[4]=6;
		Bubbling bubbling = new Bubbling();
		a=bubbling.result(a);
		System.out.println(Arrays.toString(a));
	}

 

 

快速排序:

public class QuickSort 
{

	/**
	 * @them 快速排序
	 * 对冒泡排序的改进:首先选一个轴值,将待排序的数据分为两个独立的两部分,左侧小于轴值,右侧大于轴值
	 * 然后分别对这两部分重复上述部分,直到整个序列有序。
	 */
	public static void main(String[] args) 
	{
		quicksort qs = new quicksort();
		int data[] = {44,22,2,32,54,22,88,77,99,11};
		qs.data = data;
		qs.sort(0, qs.data.length-1);
		qs.display();
	}

}


class quicksort
{
	public int data[];
	
	private int partition(int sortArray[],int low,int hight)//划分
	{
		int key = sortArray[low];
		
		while(low<hight)
		{
			while(low<hight && sortArray[hight]>=key)
				hight--;
			sortArray[low] = sortArray[hight];
			
			while(low<hight && sortArray[low]<=key)
				low++;
			sortArray[hight] = sortArray[low];
		}
		sortArray[low] = key;
		return low;
	}
	
	public void sort(int low,int hight)
	{
		if(low<hight)
		{
			int result = partition(data,low,hight);//把整体分成独立的两部分,返回轴值位置
			sort(low,result-1);//左侧重复
			sort(result+1,hight);//右侧重复
		}
		
	}
	
	public void display()
	{
		for(int i=0;i<data.length;i++)
		{
			System.out.print(data[i]);
			System.out.print(" ");
		}
	}
}



插入排序:

import java.util.Arrays;


public class InsertionSort {

	/**
	 * @param args
	 * @author mayi
	 * 
	 * 插入排序      是在部分数据有序的情况下,使用 OUT 标记第一个无序的数据,将 

		其提取保存到一个中间变量 temp 中去,使用 IN 标记空位置,依次比较 temp 中 

		的值与 IN‐1 的值,如果 IN‐值大于 temp 的值,则后移,直到遇到第一个比temp 

		小的值,在其下一个位置插入;  
		
		
		插入排序的效率:O  (N*N),  比较 N*N/4,复制 N*N/4;插入排序在随机数的 

		情况下,比冒泡快一倍,比选择稍快;在基本有序的数组中,插入排序几乎只需 

		要 O   (N);在逆序情况下,并不比冒泡快;
	 * 
	 * 
	 */
	public int[] getResult(int[] objects){
		int temp,in,out;
		for(out=1;out<objects.length;out++){
			temp =objects[out];
			in =out;
			while(in>0&&objects[in-1]>temp){
				objects[in]=objects[in-1];
				--in;
			}
			objects[in]=temp;
		}
		return objects;
	}
	public static void main(String[] args) {
		int[] a={1,3,2,4,0};
		InsertionSort insertionSort =new InsertionSort();
		a=insertionSort.getResult(a);
		System.out.println(Arrays.toString(a));
		
	}

}


希尔排序:

import java.util.Arrays;


public class Shell_Sort {

	/*
	 * @them 希尔排序
	 * 是对插入排序的改进,先将整个分成若干个,再在若干个里分别进行插入排序,然后再整体进行一次插入排序。
	 * 时间复杂度:O(NlogN)~O(N*N)
	 */
	
	public int[] shellSort(int[] theArray)   
    {   
        int inner=0,outer=0;
        int nElems=theArray.length;
        long temp=0;   
        int h=1;                    //find initial value of h   
        while(h<=nElems/3)          //1,4,13,40,121,...   
            h=h*3+1;   				
        
        while(h>0)   
        {   
        	//当间隔h>1时,进行小部分插入排序;当间隔h=1时,进行整体插入排序
        for(outer=h;outer<nElems;outer++)   
            {   
                temp=theArray[outer];   
                inner=outer;       
              while(inner>h-1&&theArray[inner-h]>=temp)   
                {   
                theArray[inner]=theArray[inner-h];   
                inner-=h;   
                }   
            theArray[inner]=(int) temp;   
             }   
            h=(h-1)/3;  // 间隔从大减小,一直减小到1,此时因为间隔为1,就相当于是做整体的插入排序
         }
        
		return theArray;   
     }   
       
  

	public static void main(String[] args) {
		int[] a={1,4,2,7,3,12,44,21,55,32,11};
		Shell_Sort g=new Shell_Sort();
		a=g.shellSort(a);
		System.out.println(Arrays.toString(a));
		
	}

}


 

选择排序:

import java.util.Arrays;


public  class SelectSort {

	/**
	 * @param args
	 * @author mayi
	 * @them  选择排序
	 * 假设有 N 条数据,则暂且标记第 0 个数据为 MIN(最小),使用 OUT 标记最左 

		边未排序的数据,然后使用 IN 标记第 1 个数据,依次与 MIN 进行比较,如果比 

		MIN 小,则将该数据标记为 MIN,当第一轮比较完后,最终的 MIN 与 OUT 标记 

		数据交换,依次类推; 
		
		选择排序的效率:O(N*N),比较 N*N/2,交换<N ; 选择排序与冒泡排序比 

		较,比较次数没有明显改变,但交换次数明显减少了很多;  
	 */
	public int[] getResult(int[] objects){
		int in,out,min,temp;
		
		//如果数组为null,直接返回
		if(objects==null||objects.length==0){
			return objects;
		}
		
		
		for(out=0;out<objects.length-1;out++){
			min =out;
			//寻找最小值
			for(in=out+1;in<objects.length;in++){
				if(objects[min]>objects[in]){
					min = in;
				}
			}
			
			//与out交换位置
			temp =objects[out];
			objects[out]=objects[min];
			objects[min]=temp;
			
		}
		return objects;
	}
	public static void main(String[] args) {
		SelectSort ss = new SelectSort();
		int[] a ={2,5,4,1};
		a=ss.getResult(a);
		System.out.println(Arrays.toString(a));
	}

}


 

作者:caiwenfeng_for_23 发表于2013-1-12 9:50:55 原文链接
阅读:45 评论:0 查看评论

    
[2]Modbus 通讯命令说明
    来源: 互联网  发布时间: 2013-11-10

仪表可以采用Modbus-RTU模式进行上位机通讯,协议格式为:8个数据位、1个停止位、无校验位,发送接收数据都是以十六进制格式进行。

 

1、发送数据格式

发送字节

1

2

3

4

5

6

7

含义

地址

读/写

A1

A2

A3

A4

CRC

仪表地址

03H,04H,06H

 

 

校验码

说明:

1)参数的通讯地址用一个字节表示时,对应A2位置,A1默认为00H。

2)03、04指令均为读命令,其中04对应的数据不可写入,03与06地址对应参数地址,一个读取、一个写入。

3)A1、A2与A3、A4组成两个双字节的数据,CRC校验码是一个双字节数据,所有的数据都是高位在前,低位在后。

4)03、04指令读取数据时,A1、A2为开始读取的地址,A3、A4为连续读取数据的个数。

5)06指令中,A1、A2需要写入数据的地址,A3、A4表示要写入的数据。

 

2、返回数据格式

1)06指令写入数据时,发送与返回的数据一致。

2)03、04指令返回时局格式

返回字节

1

2

3

4

5

……

 

 

 

 

含义

地址

03/06

读/写

返回数据有效字节数

高字节

低字节

……

高字节

低字节

高字节

低字节

第一数据

……

第N数据

CRC

说明:返回数据字节数为:N*2

 

3、上位机连续下写数据位10指令,支持此指令的仪表有XM708、XM808、XM908、XM707P、XM808P、XM908P、XMH、XMA、XMS、XMT、XMJM。

10指令发送数据格式举例为:

发送数据

01

10

0000

0002

04

0000

0000

CRC

含义

地址

指令

连续下写的首地址

连续下写数据个数

总字节数据个数*2

下写的数据

校验码


附:

C# XOR CRC16 校验码计算类

C# 带多项式参数的 CRC16计算

C#串口调试工具 v2.0


作者:yeqi3000 发表于2013-1-12 9:40:43 原文链接
阅读:69 评论:0 查看评论

    
[3]关于label标签与表单控件的显式联系和隐式联系
    来源:    发布时间: 2013-11-10

在html中,<label> 标签为 input 元素定义标签(我称之为输入提示)。
label 元素不会向用户呈现任何特殊效果。它为鼠标用户改进了可用性。如果在 label 元素内点击文本,就会触发此input控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。

<label> 标签的 for 属性应当与相关元素的 id 属性相同。

比如:

<p>请点击文本标记之一,就可以触发相关控件:</p>


<form>
<label for="male">男</label>
<input type="radio" name="gender" id="male" />
<br />
<label for="female">女</label>
<input type="radio" name="gender" id="female" />
</form>

在具体使用时,如果 input 类型为 text ,一般将输入提示写在输入控件的左边;而 input 类型为 radio 或 checkbox 时,一般在输入控件的右边(也有写在左边的,如上面的例子)。

for 属性规定 label 与哪个表单元素绑定。

隐式和显式的联系

标记通常以下面两种方式中的一种来和表单控件相联系:将表单控件作为标记标签的内容,这样的就是隐式形式,或者为 <label> 标签下的 for 属性命名一个目标表单 id,这样就是显式形式。
例如,在 XHTML 中:
显式的联系:
<label for="SSN">Social Security Number:</label>
<input type="text" name="SocSecNum" id="SSN" />

隐式的联系:
<label>Date of Birth: <input type="text" name="DofB" /></label>
第一个标记是以显式的形式将文本 "Social Security Number:" 和表单的社保号的文本输入控件 ("SocSecNum") 联系起来,它的 for 属性的值和控件的 id 一样,都是 SSN。
第二个标记 ("Date of Birth:") 不需要 for 属性,它的相关控件也不需要 id 属性,它们是通过在 <label> 标签中放入 <input> 标签来隐式的连接起来的。

如果是通过 js 或 jsp 来动态生成 <label>和<input>,最好还是采用隐式的联系,更好实现,因为不必分配和生成 id,要做到同一个网页中id不重复还是有点费劲的。

实际使用的例子:使用 FreeMarker 和 JavaScript 综合生成代码

                        /* 以前采用显式的联系,生成id费劲,还要避免与别的id重复
                        $cblist.append("<li><input type='checkbox' id='form${form.formId}_${field.sysName}_"
                            +i
                            +"' name='${field.sysName}' value='"
                            +value
                            +"'" + (found ? " checked='checked'" : "") + "/> "
                            +"<label for='form${form.formId}_${field.sysName}_"
                            +i
                            +"'>"
                            +json.data[i].text+"</label>&nbsp; </li>");
                        */

                        // 改用隐式的联系,代码简洁
                        $cblist.append("<li><label ><input type='checkbox' name='${field.sysName}' value='" +value +"'"
                            + (found ? " checked='checked'" : "")
                            + "/> " +json.data[i].text+"</label>&nbsp; </li>");

 

 

  源文:http://www.vktone.com/articles/about_html_label_tag.html

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
javascript开源软件 iis7站长之家
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3