我的希尔排序代码package sort;import static print.Print.printhh;
import static print.Print.printsz;public class ShellSort { public static void main(String[] args) {
int[] data = {9,8,7,6,5,4,3,2,1,0};
ShellSort shellSort = new ShellSort();
long begin = System.currentTimeMillis();
for (int i = 0 ; i < 100000000 ; i++){
shellSort.sort(data);
}
long end = System.currentTimeMillis();
printhh ("希尔排序所用时间:"+(end-begin)/1000);
printsz (data);
}
public void sort(int[] data){
for (int i = data.length/2 ; i > 0 ; i/=2)
for (int j = 0 ; j < i ; j++)
insertSort (data,j,i);
}
public void insertSort(int[] data , int start , int inc){
for (int i = start + inc ; i < data.length ; i += inc)
for (int j = i ; (j >= inc) && (data[j] < data[j-inc]) ; j -= inc)
swap(data,j,j-inc);
}
public void swap(int[] data , int i , int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}我的插入排序代码package sort;
import static print.Print.*;
public class InsertSort { public static void main(String[] args){
int[] data = {9,8,7,6,5,4,3,2,1,0};
InsertSort insertSort = new InsertSort();
long begin = System.currentTimeMillis();
for (int i = 0 ; i < 100000000 ; i++){
insertSort.sort(data);
}
long end = System.currentTimeMillis();
printhh ("插入排序所用时间:"+(end-begin)/1000);
printsz (data);
}
public void sort(int[] data){
for (int i = 1 ; i < data.length ; i++)
for (int j = i ; (j>0) && (data[j]<data[j-1]) ; j--)
swap(data,j,j-1);
}
public void swap(int[] data , int i , int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}}
运行结果如下:
希尔排序所用时间:26
0 1 2 3 4 5 6 7 8 9
===============
插入排序所用时间:5
0 1 2 3 4 5 6 7 8 9 这结果真让我失望,因为希尔排序就是插入排序的改良版,怎么效率比插入排序还要低呢?是我的程序写错了吗?请指教
import static print.Print.printsz;public class ShellSort { public static void main(String[] args) {
int[] data = {9,8,7,6,5,4,3,2,1,0};
ShellSort shellSort = new ShellSort();
long begin = System.currentTimeMillis();
for (int i = 0 ; i < 100000000 ; i++){
shellSort.sort(data);
}
long end = System.currentTimeMillis();
printhh ("希尔排序所用时间:"+(end-begin)/1000);
printsz (data);
}
public void sort(int[] data){
for (int i = data.length/2 ; i > 0 ; i/=2)
for (int j = 0 ; j < i ; j++)
insertSort (data,j,i);
}
public void insertSort(int[] data , int start , int inc){
for (int i = start + inc ; i < data.length ; i += inc)
for (int j = i ; (j >= inc) && (data[j] < data[j-inc]) ; j -= inc)
swap(data,j,j-inc);
}
public void swap(int[] data , int i , int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}我的插入排序代码package sort;
import static print.Print.*;
public class InsertSort { public static void main(String[] args){
int[] data = {9,8,7,6,5,4,3,2,1,0};
InsertSort insertSort = new InsertSort();
long begin = System.currentTimeMillis();
for (int i = 0 ; i < 100000000 ; i++){
insertSort.sort(data);
}
long end = System.currentTimeMillis();
printhh ("插入排序所用时间:"+(end-begin)/1000);
printsz (data);
}
public void sort(int[] data){
for (int i = 1 ; i < data.length ; i++)
for (int j = i ; (j>0) && (data[j]<data[j-1]) ; j--)
swap(data,j,j-1);
}
public void swap(int[] data , int i , int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}}
运行结果如下:
希尔排序所用时间:26
0 1 2 3 4 5 6 7 8 9
===============
插入排序所用时间:5
0 1 2 3 4 5 6 7 8 9 这结果真让我失望,因为希尔排序就是插入排序的改良版,怎么效率比插入排序还要低呢?是我的程序写错了吗?请指教
解决方案 »
- File对象和Blob之间的转换问题,急待解决!!!
- 多线程!!!
- 在IDE中设置项目编码为UTF8,为什么打包成.jar之后运行的时候就变成了GBK
- java打包,请高手指点
- 一个继承和覆盖的问题
- 小菜问老鸟的一个问题!
- 郁闷了几天的问题,大伙帮帮忙吧,文件的内容的写入
- JBUILDER 6 FOR LINUX 的注册码谁有啊
- 请问:在java的自带例子中(demo/jfc/Notepad/resources)中的资源文件Notepad_zh_CN.properties内的\uXXXX怎么显示出来,我怎么输入?
- 使用Commons-net包中的FTPClient在获取文件列表时返回为空
- 急急急,求一个可以Java类名,包名混淆的工具
- string类型转换byte类型
我之前也做过类似的测试,不过我是用随机数做的1万个元素的整型随机数组,貌似希尔比插入高2个数量级最近打字功能退化明显,见谅