作业帮 > 综合 > 作业

利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序.具体要求如下:

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 08:18:03
利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序.具体要求如下:
1) 至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、选择排序、希尔排序、快速排序、合并排序、堆排序).并把排序后的结果保存在不同的文件中.
2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法.
利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序.具体要求如下:
import java.io.RandomAccessFile;
import java.util.Vector;
import sun.misc.Sort;
public class TestSort {
\x05/**
\x05 * @param args
\x05 */
\x05public static void main(String[] args) {
\x05\x05 try {
\x05\x05\x05\x05//创建对象
\x05\x05\x05\x05 Vector arr = new Vector();
\x05\x05\x05\x05 String strs="";
\x05\x05\x05\x05 int count=10000;
\x05\x05\x05\x05 for (int i = 0; i < count; i++) {
\x05\x05\x05\x05\x05 arr.add(i + 1); //把 1-9 存入
\x05\x05\x05\x05 }
\x05\x05\x05\x05 for (int i = 0; i < count; i++) {
\x05\x05\x05\x05 int id=(int)(Math.random()*count);//随即取里面的数值 count控制随即大小
\x05\x05\x05\x05 strs+=arr.get(id)+",";
\x05\x05\x05\x05 arr.remove(id); //删除已经取走的值
\x05\x05\x05\x05 count--;
\x05\x05\x05\x05 }
\x05\x05\x05\x05Long d=0l;
\x05\x05\x05\x05strs="";
\x05\x05\x05\x05Long s1= sort1(arr);
\x05\x05\x05\x05\x05d=s1;
\x05\x05\x05\x05\x05strs="方法2,方法3 最快";
\x05\x05\x05\x05Long s2= sort2(arr);
\x05\x05\x05\x05if(d Long.parseLong(arr.get(out-1).toString())) {
\x05 continue;
\x05 }
\x05 int start = 0;
\x05 int end = out - 1;
\x05 while (start Long.parseLong(arr.get(searchIndex).toString())) {
\x05 start = searchIndex + 1;
\x05 } else if (Long.parseLong(arr.get(out).toString()) < Long.parseLong(arr.get(searchIndex).toString())) {
\x05 if (searchIndex == 0 || (searchIndex != 0 && Long.parseLong(arr.get(out).toString())> Long.parseLong(arr.get(searchIndex - 1).toString()))){//移动数据
\x05 Long changeTemp = Long.parseLong(arr.get(out).toString());
\x05\x05 for (int i = out; i > searchIndex; i--) {
\x05\x05 \x05arr.add(i,arr.get(i - 1));
\x05\x05 }
\x05\x05 arr.add(searchIndex,changeTemp);
\x05 break;
\x05 } else {
\x05 end = searchIndex - 1;
\x05 continue;
\x05 }
\x05 } else {//移动数据
\x05 Long changeTemp = Long.parseLong(arr.get(out).toString());
\x05 for (int i = out; i > searchIndex; i--) {
\x05 \x05arr.add(i,arr.get(i - 1));
\x05 }
\x05 arr.add(searchIndex,changeTemp);
\x05 break;
\x05 }
\x05 }
\x05 }
\x05 long dend = System.currentTimeMillis();
\x05 System.out.println("插入排序算法用时:" + (dend - dstart)+" 毫秒");
\x05
\x05 for(int i=0; i