关于一些排序算法的个人总结(初学)

来源:互联网 发布:nginx静态资源原理 编辑:程序博客网 时间:2024/05/17 01:12


       今天自己把一些常见的排序算法做了一下总结,因为我自己目前只学到了三种,所以暂且先总结这三种算法。

       按照惯例,上源码。


package Test;import java.util.*;//利用Arrays带有的排序方法快速排序,导包操作/** * 使用冒泡排序,选择排序,快速排序对一个给定数组进行排序,并记录程序排序所用的时间。 * @author 淼淇 * */public class Test11 {public static void main(String[] args) {// TODO Auto-generated method stublong startTime1=System.currentTimeMillis();//获取开始时间  int[] arr1 = {32,435,46,50,7,54,64,5,6,868,9,234};//数组1bubbleSort(arr1);//冒泡排序printArray(arr1);//打印冒泡排序后的数组long endTime1=System.currentTimeMillis();//获取结束时间  System.out.println("程序运行时间: "+(endTime1-startTime1)+"ms");  long startTime2=System.currentTimeMillis();//获取开始时间  int[] arr2 = {3,5,645,324,46,2,46,67,578,65,23,71};//数组2selectSort(arr2); //选择排序printArray(arr2);long endTime2=System.currentTimeMillis();//获取结束时间  System.out.println("程序运行时间: "+(endTime2-startTime2)+"ms");  long startTime3=System.currentTimeMillis();//获取开始时间  int[] arr3 = {4,56,543,176,247,32,6,8,11,45,90,59};//数组3Arrays.sort(arr3);  //Arrays带有的排序方法快速排序,直接调用方法即可printArray(arr3);long endTime3=System.currentTimeMillis();//获取结束时间  System.out.println("程序运行时间: "+(endTime3-startTime3)+"ms");  }public static void bubbleSort(int[] arr)//冒泡排序{for(int x=0; x<arr.length-1;x++){for(int y=0; y<arr.length-x-1; y++){if(arr[y]>arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}}public static void selectSort(int[] arr)//选择排序{for(int x=0; x<arr.length-1; x++){for(int y=x+1; y<arr.length; y++){if(arr[x] > arr[y]){int temp = arr[x];arr[x] = arr[y];arr[y] = temp; }}}}public static void printArray(int[] arr)//打印数组{System.out.print("[");for(int x=0; x<arr.length; x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}System.out.println();}  }

       关于运行结果,因为数组中元素个数很少,而且要考虑到cpu时间片的执行问题,所以我只是拿了其中一次的运

行结果。

[5,6,7,9,32,46,50,54,64,234,435,868]程序运行时间: 0ms[2,3,5,23,46,46,65,67,71,324,578,645]程序运行时间: 1ms[4,6,8,11,32,45,56,59,90,176,247,543]程序运行时间: 3ms

       我运行了好多次才有数据,一般全部都是0ms居多,因为程序中的元素太少了,显示程序运行时间的目的原来是

为了测试哪个方法更高效,看来目前是不行了。

       我原本打算是把程序运行时间这个方法定义成一个public static 进行直接调用的,但是无奈不知道如何把一个方

法作为一个参数传递给另一个方法,只好作罢。下面这个是我原本打算封装的方法。

 public static long runTime(????????//怎么传进去)        {                long startTime=System.currentTimeMillis();//获取开始时间                ???????//调用一个方法                long endTime=System.currentTimeMillis();//获取结束时间                  System.out.println("程序运行时间: "+(endTime-startTime)+"ms");                          }

       只能等以后自己学的深入了再考虑吧。

       这次巩固了自己对算法的理解,当然仅仅常见的算法,如果以后有更深入的算法,再做总结。加油!~


0 0
原创粉丝点击