- 浏览: 377387 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
Kitty19872010:
在书《Principles of Concurrent and ...
Java中的volatile关键字 -
奇林醉:
受用了!
JAVA Clone机制 -
guji528:
对result type做了详细描述,好。
struts2 strus.xml中result类型及含义 -
water84222:
dc444 写道为了回帖还做了个测验,真麻烦。
楼主对vol ...
Java中的volatile关键字 -
dc444:
为了回帖还做了个测验,真麻烦。
楼主对volatile是有一 ...
Java中的volatile关键字
原文地址 http://blog.csdn.net/lschou520/archive/2008/10/29/3176422.aspx
插入排序:
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class InsertSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int temp;
- for ( int i= 1 ;i<data.length;i++){
- for ( int j=i;(j> 0 )&&(data[j]<data[j- 1 ]);j--){
- SortUtil.swap(data,j,j- 1 );
- }
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class BubbleSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int temp;
- for ( int i= 0 ;i<data.length;i++){
- for ( int j=data.length- 1 ;j>i;j--){
- if (data[j]<data[j- 1 ]){
- SortUtil.swap(data,j,j- 1 );
- }
- }
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class SelectionSort implements SortUtil.Sort {
- /*
- * (non-Javadoc)
- *
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int temp;
- for ( int i = 0 ; i < data.length; i++) {
- int lowIndex = i;
- for ( int j = data.length - 1 ; j > i; j--) {
- if (data[j] < data[lowIndex]) {
- lowIndex = j;
- }
- }
- SortUtil.swap(data,i,lowIndex);
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class ShellSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- for ( int i=data.length/ 2 ;i> 2 ;i/= 2 ){
- for ( int j= 0 ;j<i;j++){
- insertSort(data,j,i);
- }
- }
- insertSort(data, 0 , 1 );
- }
- /**
- * @param data
- * @param j
- * @param i
- */
- private void insertSort( int [] data, int start, int inc) {
- int temp;
- for ( int i=start+inc;i<data.length;i+=inc){
- for ( int j=i;(j>=inc)&&(data[j]<data[j-inc]);j-=inc){
- SortUtil.swap(data,j,j-inc);
- }
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class QuickSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- quickSort(data, 0 ,data.length- 1 );
- }
- private void quickSort( int [] data, int i, int j){
- int pivotIndex=(i+j)/ 2 ;
- //swap
- SortUtil.swap(data,pivotIndex,j);
- int k=partition(data,i- 1 ,j,data[j]);
- SortUtil.swap(data,k,j);
- if ((k-i)> 1 ) quickSort(data,i,k- 1 );
- if ((j-k)> 1 ) quickSort(data,k+ 1 ,j);
- }
- /**
- * @param data
- * @param i
- * @param j
- * @return
- */
- private int partition( int [] data, int l, int r, int pivot) {
- do {
- while (data[++l]<pivot);
- while ((r!= 0 )&&data[--r]>pivot);
- SortUtil.swap(data,l,r);
- }
- while (l<r);
- SortUtil.swap(data,l,r);
- return l;
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class ImprovedQuickSort implements SortUtil.Sort {
- private static int MAX_STACK_SIZE= 4096 ;
- private static int THRESHOLD= 10 ;
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int [] stack= new int [MAX_STACK_SIZE];
- int top=- 1 ;
- int pivot;
- int pivotIndex,l,r;
- stack[++top]= 0 ;
- stack[++top]=data.length- 1 ;
- while (top> 0 ){
- int j=stack[top--];
- int i=stack[top--];
- pivotIndex=(i+j)/ 2 ;
- pivot=data[pivotIndex];
- SortUtil.swap(data,pivotIndex,j);
- //partition
- l=i- 1 ;
- r=j;
- do {
- while (data[++l]<pivot);
- while ((r!= 0 )&&(data[--r]>pivot));
- SortUtil.swap(data,l,r);
- }
- while (l<r);
- SortUtil.swap(data,l,r);
- SortUtil.swap(data,l,j);
- if ((l-i)>THRESHOLD){
- stack[++top]=i;
- stack[++top]=l- 1 ;
- }
- if ((j-l)>THRESHOLD){
- stack[++top]=l+ 1 ;
- stack[++top]=j;
- }
- }
- //new InsertSort().sort(data);
- insertSort(data);
- }
- /**
- * @param data
- */
- private void insertSort( int [] data) {
- int temp;
- for ( int i= 1 ;i<data.length;i++){
- for ( int j=i;(j> 0 )&&(data[j]<data[j- 1 ]);j--){
- SortUtil.swap(data,j,j- 1 );
- }
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class MergeSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int [] temp= new int [data.length];
- mergeSort(data,temp, 0 ,data.length- 1 );
- }
- private void mergeSort( int [] data, int [] temp, int l, int r){
- int mid=(l+r)/ 2 ;
- if (l==r) return ;
- mergeSort(data,temp,l,mid);
- mergeSort(data,temp,mid+ 1 ,r);
- for ( int i=l;i<=r;i++){
- temp[i]=data[i];
- }
- int i1=l;
- int i2=mid+ 1 ;
- for ( int cur=l;cur<=r;cur++){
- if (i1==mid+ 1 )
- data[cur]=temp[i2++];
- else if (i2>r)
- data[cur]=temp[i1++];
- else if (temp[i1]<temp[i2])
- data[cur]=temp[i1++];
- else
- data[cur]=temp[i2++];
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class ImprovedMergeSort implements SortUtil.Sort {
- private static final int THRESHOLD = 10 ;
- /*
- * (non-Javadoc)
- *
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- int [] temp= new int [data.length];
- mergeSort(data,temp, 0 ,data.length- 1 );
- }
- private void mergeSort( int [] data, int [] temp, int l, int r) {
- int i, j, k;
- int mid = (l + r) / 2 ;
- if (l == r)
- return ;
- if ((mid - l) >= THRESHOLD)
- mergeSort(data, temp, l, mid);
- else
- insertSort(data, l, mid - l + 1 );
- if ((r - mid) > THRESHOLD)
- mergeSort(data, temp, mid + 1 , r);
- else
- insertSort(data, mid + 1 , r - mid);
- for (i = l; i <= mid; i++) {
- temp[i] = data[i];
- }
- for (j = 1 ; j <= r - mid; j++) {
- temp[r - j + 1 ] = data[j + mid];
- }
- int a = temp[l];
- int b = temp[r];
- for (i = l, j = r, k = l; k <= r; k++) {
- if (a < b) {
- data[k] = temp[i++];
- a = temp[i];
- } else {
- data[k] = temp[j--];
- b = temp[j];
- }
- }
- }
- /**
- * @param data
- * @param l
- * @param i
- */
- private void insertSort( int [] data, int start, int len) {
- for ( int i=start+ 1 ;i<start+len;i++){
- for ( int j=i;(j>start) && data[j]<data[j- 1 ];j--){
- SortUtil.swap(data,j,j- 1 );
- }
- }
- }
- }
- package org.rut.util.algorithm.support;
- import org.rut.util.algorithm.SortUtil;
- public class HeapSort implements SortUtil.Sort{
- /* (non-Javadoc)
- * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- public void sort( int [] data) {
- MaxHeap h= new MaxHeap();
- h.init(data);
- for ( int i= 0 ;i<data.length;i++)
- h.remove();
- System.arraycopy(h.queue, 1 ,data, 0 ,data.length);
- }
- private static class MaxHeap{
- void init( int [] data){
- this .queue= new int [data.length+ 1 ];
- for ( int i= 0 ;i<data.length;i++){
- queue[++size]=data[i];
- fixUp(size);
- }
- }
- private int size= 0 ;
- private int [] queue;
- public int get() {
- return queue[ 1 ];
- }
- public void remove() {
- SortUtil.swap(queue, 1 ,size--);
- fixDown( 1 );
- }
- //fixdown
- private void fixDown( int k) {
- int j;
- while ((j = k << 1 ) <= size) {
- if (j < size && queue[j]<queue[j+ 1 ])
- j++;
- if (queue[k]>queue[j]) //不用交换
- break ;
- SortUtil.swap(queue,j,k);
- k = j;
- }
- }
- private void fixUp( int k) {
- while (k > 1 ) {
- int j = k >> 1 ;
- if (queue[j]>queue[k])
- break ;
- SortUtil.swap(queue,j,k);
- k = j;
- }
- }
- }
- }
- package org.rut.util.algorithm;
- import org.rut.util.algorithm.support.BubbleSort;
- import org.rut.util.algorithm.support.HeapSort;
- import org.rut.util.algorithm.support.ImprovedMergeSort;
- import org.rut.util.algorithm.support.ImprovedQuickSort;
- import org.rut.util.algorithm.support.InsertSort;
- import org.rut.util.algorithm.support.MergeSort;
- import org.rut.util.algorithm.support.QuickSort;
- import org.rut.util.algorithm.support.SelectionSort;
- import org.rut.util.algorithm.support.ShellSort;
- public class SortUtil {
- public final static int INSERT = 1 ;
- public final static int BUBBLE = 2 ;
- public final static int SELECTION = 3 ;
- public final static int SHELL = 4 ;
- public final static int QUICK = 5 ;
- public final static int IMPROVED_QUICK = 6 ;
- public final static int MERGE = 7 ;
- public final static int IMPROVED_MERGE = 8 ;
- public final static int HEAP = 9 ;
- public static void sort( int [] data) {
- sort(data, IMPROVED_QUICK);
- }
- private static String[] name={
- "insert" , "bubble" , "selection" , "shell" , "quick" , "improved_quick" , "merge" , "improved_merge" , "heap"
- };
- private static Sort[] impl= new Sort[]{
- new InsertSort(),
- new BubbleSort(),
- new SelectionSort(),
- new ShellSort(),
- new QuickSort(),
- new ImprovedQuickSort(),
- new MergeSort(),
- new ImprovedMergeSort(),
- new HeapSort()
- };
- public static String toString( int algorithm){
- return name[algorithm- 1 ];
- }
- public static void sort( int [] data, int algorithm) {
- impl[algorithm- 1 ].sort(data);
- }
- public static interface Sort {
- public void sort( int [] data);
- }
- public static void swap( int [] data, int i, int j) {
- int temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
- }
发表评论
-
Sington类的序列化留存
2011-08-01 14:30 1341Sington类的序列化 为了使Singleton类变成 ... -
两个数字互换位置的最简单办法
2009-03-11 17:50 1676a=1 ,b=2 a=a^b; b=a^b; a=a^b ... -
JAVA中各类CACHE机制实现的比较
2008-11-21 17:02 1678这几天学习ruby on rails,发现rails中的cac ... -
JAVA Clone机制
2008-11-10 16:24 47631,什么是Clone ? 简单地说, Clo ... -
实现对一个二维数组按指定的列集进行排序
2008-11-07 14:24 4894# private int array[][] = new ... -
ini文件的读取
2008-08-14 17:54 1040import java.io.File; import jav ... -
原码,补码,反码
2008-02-26 16:03 1267原码按位取反成为反码; 反码+1成为补码 ... -
Java中的volatile关键字
2008-02-01 18:06 8067关于volatile ... -
Java语言中关键字讲解(二)transient的用途
2008-02-01 16:52 47811.什么是序列化 对象 ... -
Java语言中关键字讲解(一)strictfp的用途
2008-01-31 18:03 1568Java语言中关键字strictfp的用途- - 自Jav ... -
向上转型与接口回调的区别
2008-01-31 10:56 45151 .接口回调是什么 ... -
JSP页面中的pageEncoding和contentType
2008-01-30 15:56 1139关于JSP页面中的pageEncoding和contentTy ... -
Tomcat的配置技巧精华详解
2008-01-30 15:23 9691、配置系统管理(Admin ... -
Tomcat简介
2008-01-28 18:27 30401.Tomcat简介 Jakarta Tomcat服务 ... -
properties文件的Eclipse插件
2008-01-21 12:23 1029在此想和大家分享一个不错的编写properties文件的Ecl ... -
java---hashtable
2008-01-17 16:48 1968Hashtable检索数据时,必须比较所用关键字是否 ... -
Java泛型编程指南
2008-01-16 15:07 1604Java泛型编程指南 此系列文章译自SUN的泛型编程指南, ... -
Servlet/JSP学习笔记-Session和作用域
2008-01-16 14:13 2957Servlet/JSP学习笔记(7)-Session和作用域 ...
相关推荐
各种排序算法java实现的源代码.zip
图表分类ppt
资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立
BDE_Installer_for_RAD_Studio_10.2_Tokyo.7z
箭头指向中心PPT模板素材
永磁同步电机MTPA控制仿真模型和矢量控制仿真模型,模型全部自己搭建,控制策略采用离散模型仿真,仿照真实微控制器的控制,该模型采用固定的电机参数计算出电流参考值,后期会开发出电机磁饱和交叉耦合变参数的仿真模型,图一为idiq电流真实值随负载的变化的控制波形,图二为MTPA和矢量控制的电流幅值的波形对比,该模型真实度极高,电流环转速环带宽可调,响应快慢可以自己设计。
五项说明关联关系PPT素材
图表分类ppt
突出显示强调关系PPT模板素材
springboot项目基于Spring Boot的民宿租赁系统的设计与实现,含有完整的源码和报告文档
MATLAB代码:基于数据驱动的中央空调系统可控潜力评估 关键词:数据驱动 中央空调 需求响应 可控潜力评估 编程语言:matlab平台 内容简介: 代码主要做的是住宅空调负荷的可调度潜力评估,因为住宅空调负荷是一种具有一定灵活性和可控性的需求响应资源,本代码首先评估单一客户的空调可控潜力,进而发展为大规模地区的空调的需求响应潜力以及规模的评估。 采用静态和动态模型参数估计的分段分析方法,深入分析了ACLs的消费行为,并针对不同时间尺度的需求响应问题,以成本效益为目标,优化空调负荷的需求响应行为。 最后以实际的算例数据,验证了所提出方法的准确性和鲁棒性,代码出图效果极好,而且研究的问题比较全面,适合在此基础上稍加修改形成自己的成果
量产汽车VCU控制策略模型及文档+2份 两个vcu模型 第一个模型为量产项目模型,纯电动车VCU控制策略模型,包含纯电动汽车完整控制策略模块,按autosar价格建模,可以进行代码生成,详细见图片。 第二个模型:包含相关模型设计说明文档
偏移容忍度谐振补偿网络方设计方法研究 simulink仿真实现。 磁耦合谐振式无线电能传输中,相控电容式补偿方法研究 simulink仿真实现
这个饮料销售数据集是研究饮料行业的宝贵资源,它模拟了真实的销售场景,涵盖了众多关键信息。数据集包含10个主要字段,分别是订单ID、客户ID、客户类型(B2B或B2C)、产品名称、产品类别、单价、购买数量、产品折扣、折扣后的总价、客户所在地区以及订单日期。这些字段共同构成了一个全面的销售数据框架,为多维度的分析提供了可能。 从客户类型来看,B2C客户占比64%,而B2B客户占36%,且B2B客户通常能获得折扣,这一特点为分析不同客户群体的销售策略和利润贡献提供了重要依据。 在价格方面,单价和总价的分布范围相当广泛,单价从0.32到超过100不等,总价的分布也呈现出类似的广泛性,这为探究价格与销售量之间的复杂关系、定价策略的有效性等关键问题提供了丰富的数据样本。 总体而言,这个数据集为饮料行业的市场分析、销售策略制定、客户细分研究、产品定价优化以及区域市场拓展等多方面研究提供了极具价值的数据基础。它能够帮助相关企业和研究人员深入洞察饮料销售的各个环节,从而做出更加科学、合理的决策,推动饮料行业的发展。
springboot项目基于Web的课程设计选题管理系统,含有完整的源码和报告文档
TMS WEB Cor0820(中文版).docx
电力系统调度 源荷不确定性matlab 程序语言:matlab+yalmip(可适用cplex或者gurobi作为求解器) 关键词:优化调度 源荷不确定性 模糊机会约束 碳交易 内容:参照考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能、风光、火电机组及水电机组,解决了目标函数含有分类特征的约束问题、非线性约束 目标的线性转化问题,且考虑了机组的启停时间约束,目标函数考虑运行成本、弃风弃光和碳成本。 优势:有详细的资料,程序完整性好、模块化编程、注释逻辑分明、方便学习
springboot项目基于springboot的招聘系统的设计与实现,含有完整的源码和报告文档
几行简单判断闰年平年的代码