1.java实现快速排序
//Author:BonJean
//Description:demonstrate for Quick Sorting Algorithm
//2014.07.25
//packagesorting;
import java.util.*;
public class Demo_Sorting {
public static void main(String[] args) {
//createclass for system time
SysTimesysTime=new SysTime();
//initialize array
int len=10000;
intscope=100;
intarr[]=new int[len];
inttemp=0;
for(inti=0;i
//Math.random() will generate a random number from 0 to 1, or[1,0)
temp=(int)(Math.random()*scope);
arr[i]=temp;
}
//showthe time before printing
sysTime.showSysTime();
//printarray
for(inti=0;i
System.out.print(arr[i]+"\t");
if((i+1)==0){
System.out.println();
}
}
//show the time before sorting
sysTime.showSysTime();
//createquick for sorting
Quickquick=new Quick();
quick.sort(arr,0,arr.length-1);
//showthe time after sorting
sysTime.showSysTime();
//printarray again
for(inti=0;i
System.out.print(arr[i]+"\t");
if((i+1)==0){
System.out.println();
}
}
//showthe time after printing
sysTime.showSysTime();
}
}
//createa class for print system time
classSysTime{
publicSysTime(){
System.out.println("Recordof system time");
}
//definea function for printing system time
protectedvoid showSysTime(){
Calendarcal=Calendar.getInstance();
System.out.println(cal.getTime());
}
}
class Quick{
public Quick(){
System.out.println("QuickSorting Algorithm");
}
protected void sort(int arr[],int left, intright){
if(left < right){
int key = arr[left];
//int key=arr[(left+right)/2];
int low = left;
int high = right;
while(low < high){
while(low < high && arr[high]>=key){
high--;
}
arr[low] = arr[high];
while(low < high && arr[low]<=key){
low++;
}
arr[high] = arr[low];
}
arr[low] = key;
sort(arr,left,low-1);
sort(arr,low+1,right);
}
}
}
参考:《排序算法——快速排序》 作者:~大器晚成~
2.常见的java内存异常
当数组的长度len设置的太大时可能出现StockOverflowError,
2.1 StackOverflowError
java.lang.StackOverflowError错误表示JVM栈溢出,出现这个错误的原因一般都是递归的层次太深,或者无限的递归造成的。出现这种错误的时候首先要对应用程序进行检查,看看是那些代码造成了栈溢出,如果是递归造成的可以改为迭代方式实现。
JVM同样也提供了一个参数来让我们调节运行时栈空间的大小。-XX:Xss=256K表示栈空间最大为256K.我们也可以调大,但是建议不要对此参数进行调节。
2.2 OutOfMemoryError: Java heapspace.
java.lang.OutOfMemoryError: Java heapspace这个错误表示JVM的新生代和老生代的内存不足。出现这个错误说明应用程序出现了内存溢出或者程序所需要的内存大于JVM的内存设置了。
遇到这个问题的时候,首先我们可以调节JVM的Heap内存的大小,具体可以通过-Xmx-Xms来进行设置,如果设置大以后还是会出现内存溢出,那么说明应用程序本身存在内存泄露,这个时候就需要我们对应用程序进行检查,找出导致内存泄露的地方,然后修正。
2.3 OutOfMemory:PermGen space
java.lang.OutOfMemory:PermGenspace错误是由Permspace空间不足。一般出现这个错误是由加载了太多的类或者大量使用了动态代理造成的。如果出现了这个错误,我们可以将Perm空间调大一点。
-XX:PermSize=16M
参考:《JVM内存模型以及垃圾收集策略解析》 作者:狂放不羁
参考文献:
[1]《排序算法——快速排序》 作者:~大器晚成~
[2] http://www.dewen.org/q/6488
[3]《JVM内存模型以及垃圾收集策略解析》 作者:狂放不羁
/**
*站在巨人的肩上才能看得更远,一步一个脚印才能走得更远。分享成长,交流进步,转载请注明出处!
*/