- 浏览: 74617 次
- 性别:
- 来自: 大连
最新评论
-
Heart.X.Raid:
//非递归后序遍历二叉树
void aftorder_t ...
树的遍历 -
zhangjunji111:
airlink 写道建议你再加个0来循环。
我的测试结果是10 ...
Spring的获取Bean的性能测试。 -
airlink:
建议你再加个0来循环。我的测试结果是10倍以上的差距。spri ...
Spring的获取Bean的性能测试。 -
rmn190:
结果中哪一个是C++的,哪一个Java的呢? 楼主最好用一个t ...
简单的c++排序跟java的性能比较。仅仅学习。 -
moshalanye:
每个对象都有一个隐含锁静态对象属于Class对象,非晶态对象属 ...
Java里面的同步跟oracle的锁的联想
package com.liuxt.sort;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SortMain {
public static void main(String[] args) throws Exception {
SortUtil sortUtil=new SortUtil();
while(true)
{
System.out.print("please input the length of the Array:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String arrayLength=br.readLine();
int dataLength=Integer.parseInt(arrayLength);
sortUtil.dataLength=dataLength;
int[] a=sortUtil.randomArray();
System.out.print("please select an sort algorithm:1 select 2 bubble 3 quick,0 quit:");
String sortSelect=br.readLine();
int algorithm=Integer.parseInt(sortSelect);
sortUtil.sortData(algorithm,a);
if (algorithm==0){
System.exit(0);
}
}
}
}
package com.liuxt.sort;
import java.util.Calendar;
import java.util.Random;
import com.liuxt.sort.impl.Bubble;
import com.liuxt.sort.impl.QuickSort;
import com.liuxt.sort.impl.Select;
public class SortUtil {
public final int SelectSort=1;
public final int BubbleSort=2;
public final int QuickSort=3;
public final int XierSort=4;
public int dataLength=0;
int maxElement = 100000;
//Calendar start_time=Calendar.getInstance();
Calendar start_time=null;
Calendar end_time=null;
public int[] randomArray() {
int[] a = new int[dataLength];
Random random = new Random();
for (int i = 0; i < dataLength; i++) {
a[i] = random.nextInt(maxElement);
}
return a;
}
private boolean testSort(int[] a){
for(int i=0;i<a.length-1;i++){
if (a[i]>a[i+1]) return false;
}
return true;
}
public void sortData(int algorithm,int[] a){
if (algorithm==SelectSort){
DataSort dataSort = new Select();
start_time=Calendar.getInstance();
dataSort.sortData(a);
end_time=Calendar.getInstance();
long duration=end_time.getTimeInMillis()-start_time.getTimeInMillis();
System.out.println("duration time:"+(duration));
System.out.println("elapse time:"+(duration/1000.0)+"s");
System.out.println("test result:==="+testSort(a));
}
if (algorithm==BubbleSort){
DataSort dataSort = new Bubble();
start_time=Calendar.getInstance();
dataSort.sortData(a);
end_time=Calendar.getInstance();
long duration=end_time.getTimeInMillis()-start_time.getTimeInMillis();
System.out.println("elapse time:"+(duration/1000.0)+"s");
System.out.println("test result:==="+testSort(a));
}
if (algorithm==QuickSort){
DataSort dataSort = new QuickSort();
start_time=Calendar.getInstance();
dataSort.sortData(a);
end_time=Calendar.getInstance();
long duration=end_time.getTimeInMillis()-start_time.getTimeInMillis();
System.out.println("elapse time:"+(duration/1000.0)+"s");
System.out.println("test result:==="+testSort(a));
}
}
}
package com.liuxt.sort.impl;
import com.liuxt.sort.DataSort;
public class Bubble implements DataSort {
public void sortData(int[] data) {
int i = 0, j = 0, temp = 0;
boolean exchange;
for (i = 0; i < data.length; i++) // 设定执行的次数
{
exchange = false;// 每趟排序前设定 交换标志
for (j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
// 将j和j+1互换
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
exchange = true;
}
}
if (!exchange) // 本趟排序未发生交换,提前终止算法
return;
} // end for i
}
}
package com.liuxt.sort.impl;
import com.liuxt.sort.DataSort;
public class Select implements DataSort {
public void sortData(int[] data) {
int i, j, temp, min;
int n = data.length;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++) {
if (data[j] < data[min]) {
min = j;
// temp=data[i];data[i]=data[j];data[j]=temp;
}
}
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
}
package com.liuxt.sort.impl;
import com.liuxt.sort.DataSort;
public class QuickSort implements DataSort {
public void sortData(int[] data) {
try {
quickSort3(data, 0, data.length - 1);
} catch (Exception e) {
e.printStackTrace();
}
}
void quickSort3(int data[],int low,int high){
int i,j,privokey;
if (low<high){
privokey=data[low];i=low;j=high;
while(i<j) {
while(i<j&&data[j]>=privokey) j--;
if (i<j) data[i++]=data[j];
while(i<j&&data[i]<=privokey) i++;
if(i<j) data[j--]=data[i];
}
data[i]=privokey;
quickSort3(data,low,i-1);
quickSort3(data,i+1,high);
}
}
}
run.bat
echo off
set java_home=C:\Program Files\Java\jdk1.5.0_14
set classpath="%java_home%/lib/dt.jar;%java_home%/lib/tool.jar;."
java -cp %classpath% com/liuxt/sort/SortMain
执行结果:
please input the length of the Array:50000
please select an sort algorithm:1 select 2 bubble 3 quick,0 quit:1
duration time:6984
elapse time:6.984s
test result:===true
please input the length of the Array:50000
please select an sort algorithm:1 select 2 bubble 3 quick,0 quit:2
elapse time:16.469s
test result:===true
please input the length of the Array:50000
please select an sort algorithm:1 select 2 bubble 3 quick,0 quit:3
elapse time:0.016s
test result:===true
发表评论
-
Java里面的同步跟oracle的锁的联想
2009-07-16 08:21 1174暂时不讨论。不明白 -
想做一个JMSServer,实现10000/s可以吗?
2009-07-02 17:51 1038本贴已经删除,有很多东西需要学习。谢谢大大家给予的建议和批评啊 ... -
Spring的事务管理例子代码
2009-06-27 10:29 3444事务管理: 分global事务管理和local事务管理, ... -
Java String中的hashCode函数
2009-06-27 09:43 4265String 类中的hash函数如下: public ... -
java中HashCode的作用和Map的实现结构
2009-06-25 22:50 3906Map 是一种数据结构,用来实现key和value 的映射。通 ... -
使用Spring后会带来什么好处
2009-06-23 16:20 9331 为你的项目增加一个管家,你不必写很多的代码去实现一些框架已 ... -
jboss EJB
2009-06-15 14:39 819暂时不讨论。不明白 -
简单的归并排序算法例子
2009-06-14 21:36 1063import java.util.ArrayList;impo ... -
Jboss消息中间件跟IBM MQ的比较
2009-06-12 21:28 1603简单说几点. 1 jboss消息以java编写,嵌入到jbo ... -
Jboss message point to point
2009-06-12 21:17 885下面的例子程序是从Jbos ... -
Jboss SubscriberClient 主动式接受消息
2009-06-11 21:35 692下载jboss后面,按照默认启动就可以。 packag ... -
http报文
2009-06-11 21:09 2552HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII ... -
面向对象的三个特征
2009-06-11 20:52 780面向对象的三个基本特征是:封装、继承、多态。 Th ... -
apache ab 性能测试
2009-06-10 20:22 1493测试结果的说明:参考文章:http://www.phpchin ... -
java虚拟机规范 3.5 运行期数据区
2009-06-10 14:35 925http://java.sun.com/docs/books/ ... -
java SQL注入分析程序
2009-06-09 22:11 1966DROP TABLE IF EXISTS `user`;CRE ... -
java virtural machine data type
2009-06-08 16:35 674data ... -
parse xml file with dom and sax .
2009-06-07 13:47 908基于dom方式的dom4j和jdom以及JDK提供的dom方式 ... -
memcached 的linux配置
2009-06-03 22:45 681详细参选下面的连接: http://www.ccvita.co ... -
memcached 的java 客户端的简单测试代码
2009-06-03 22:42 1548import java.io.IOException; imp ...
相关推荐
在这个实现中,`quickSort`方法是主排序函数,它接受一个整型数组和两个索引,分别表示数组的起始和结束位置。`partition`方法负责将数组分为两部分,并返回基准元素的新位置。`main`方法展示了如何调用快速排序并...
在Java中,快速排序的实现涉及递归,通过`partition`函数将数组划分为两部分,并对左右子数组分别调用自身。快速排序的平均时间复杂度为O(n log n),但在最坏情况下(数组已经排序或接近排序)为O(n^2)。 5. **折半...
此外,还使用了`System.out.print`和`System.out.println`函数来打印排序后的结果,以及使用`Date`类和`getTime()`方法来计算排序所花费的时间,这有助于对比不同算法的执行效率。 通过对比冒泡排序、选择排序和...
5. 归并排序:同样基于分治,将数组不断分割成小数组,然后合并这些小数组以得到排序结果。C和Java中,都需要使用递归,并需要额外的内存空间来存储临时结果。 6. 堆排序:通过构建最大(或最小)堆来实现排序,堆...
对于这些问题,虽然可以通过编写特定的函数和使用基本的排序算法来解决,但在实际应用中,为了提高程序的执行效率和可维护性,往往需要根据数据量的大小和特定需求来选择合适的算法。Java内置的`Arrays.sort()`方法...
- `Runnable`接口:实现`Runnable`接口,然后将其实例传递给`Thread`的构造函数,同样通过`start()`启动。 2. **线程同步与通信**: - `synchronized`关键字:用于线程间的同步,防止多个线程同时访问共享资源。 ...
- 多核处理器支持真正的并行执行,能够同时运行多个线程或进程,提高程序执行效率。 #### 用户线程和内核线程 - **用户线程**由应用程序管理,无需操作系统介入。 - **内核线程**由操作系统调度,性能开销较大。 ...
6. **Nashorn JavaScript引擎**:Java 8包含了Nashorn JavaScript引擎,允许Java应用直接执行JavaScript代码,并与Java对象无缝交互,促进了Java和JavaScript的集成。 7. **Optional类**:`Optional<T>`类是一个...
- 归并排序:同样采用分治策略,将数组递归地分成两半,分别排序,然后合并。 - 堆排序:利用堆数据结构实现的排序方法,可以原地排序。 2. **查找算法**: - 线性查找:逐个检查元素直到找到目标值。 - 二分...
最后,代码中使用 `System.currentTimeMillis()` 来测量排序算法的执行时间,这是一种简单的时间复杂度分析方法,可以直观地比较不同排序算法的效率。 总的来说,了解并熟练掌握这些基础排序算法对于Java开发者来说...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中实现多线程有两种主要方式:通过继承`Thread`类或者实现`Runnable`接口。下面我们将深入探讨这两...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承`Thread`类或者实现`Runnable`接口。 1. **继承Thread类*...
算法在Java编程中同样重要,包括排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)、搜索算法(如深度优先搜索、广度优先搜索)、图算法(如Dijkstra最短路径算法、Floyd-Warshall所有对最短...
- **Collections**:这是一个工具类,也位于`java.util`包中,它包含了一系列静态方法,用于操作集合类的实例,如排序、查找和填充等。 #### 7. assert 的使用场景 `assert`关键字用于添加断言,这是一种编程技术...
在Java中,需要一个循环来改变间隔,以及一个嵌套的循环来执行插入排序。 8. **计数排序(Counting Sort)** 计数排序是一种非基于比较的排序算法,适用于待排序数据范围不大的情况。它统计每个元素出现的次数,然后...
接着,对左右两个子数组分别进行同样的归并排序操作。这个过程中,子数组可能会继续分解,直到每个子数组只包含一个元素,因为一个元素自然就是有序的。 在排序阶段,软件可能使用递归的方式来实现归并排序。每次...
同样地,变量或方法如果被声明为`final`,则该变量或方法的值/行为在整个程序执行过程中不可改变。例如,`final int num = 10;`声明后,`num`的值将永远固定为10,无法再改变。 - **finally**:此关键字用于异常...
多线程程序能够同时执行多个任务,提高程序的效率和响应速度。实现时,可能会定义多个线程,每个线程执行不同的任务,如数据处理、网络通信等。 #### 十、数据文件应用程序 这类程序通常涉及文件的读写操作,如...