这篇blog先不要看了,代码有问题,请看新一篇,
排序算法的最快实现 JAVA and C(http://blog.csdn.net/qingshi163/archive/2008/06/30/2598659.aspx)。谢谢。 这个帖子很有意思 http://topic.csdn.net/u/20080624/11/55e5a350-d260-4a35-a02a-71b4c1795a00.html?seed=617041840,是讲排序算法的快速实现的,我在后面发了3个回复后,本来还想发一个的,不过我的等级,发不了了,我把我的回复贴上来。<br /><br />join_sleep的代码还可以更快,他的代码里的temp[]根本没有用处啊,这里是我改的代码,算出来结果也是正确的,而且一千万速度由140提高到77。
import java.util.Random;
/**
* @(#)sort1.java
*
*
* @author
* @version 1.00 2008/6/28
*/
public class sort1 {
public static final int MAX = 10000000;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Random r = new Random(20080628L);
int[] nums = new int[MAX];
for(int i = 0; i < MAX; i++) {
nums[i] = r.nextInt(MAX);
}
long begin, end;
System.out.println("start");
begin = System.currentTimeMillis();
sort_john_sheep(nums);
end = System.currentTimeMillis();
System.out.println(end - begin);
//show(nums);
}
public static void show(int[] nums) {
for(int i = 0; i < MAX; i++) {
System.out.println(nums[i]);
}
}
public static int[] sort_john_sheep(int[] nums) {
int size = MAX;
int max = getMax_john_sheep(nums) + 1;
//byte[] temp = new byte[max];
int i;
//for(i = 0; i < size; i++)
// temp[i]++;
int pos = 0;
int l;//System.out.println(temp[1] + ":" + temp[2]);
for (i = 0; i < max; i++) {
for (l = 0; l < 1/*temp[i]*/; l++)
nums[pos++] = i;
}
return nums;
}
private static int getMax_john_sheep(int[] data) {
int max = 0;
for (int i = 0; i < MAX; i++) {
if (i > max) {
max = i;
}
}
return max;
}
}
还有个没发上去的。 ……,还可以再改,速度由77-51……怎么那么多无用的代码……
import java.util.Random;
/**
* @(#)sort1.java
*
*
* @author
* @version 1.00 2008/6/28
*/
public class sort1 {
public static final int MAX = 10000000;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Random r = new Random(20080628L);
int[] nums = new int[MAX];
for(int i = 0; i < MAX; i++) {
nums[i] = r.nextInt(MAX);
}
long begin, end;
System.out.println("start");
begin = System.currentTimeMillis();
//sort(nums);
sort_john_sheep(nums);
end = System.currentTimeMillis();
System.out.println(end - begin);
//show(nums);
}
public static void show(int[] nums) {
for(int i = 0; i < MAX; i++) {
System.out.println(nums[i]);
}
}
public static int[] sort_john_sheep(int[] nums) {
int size = MAX;
int max = getMax_john_sheep(nums) + 1;
//byte[] temp = new byte[max];
int i;
//for(i = 0; i < size; i++)
// temp[i]++;
int pos = 0;
//int l;//System.out.println(temp[1] + ":" + temp[2]);
for (i = 0; i < max; i++) {
//for (l = 0; l < 1/*temp[i]*/; l++)
nums[pos++] = i;
}
return nums;
}
private static int getMax_john_sheep(int[] data) {
int max = 0;
for (int i = 0; i < MAX; i++) {
if (i > max) {
max = i;
}
}
return max;
}
}