关于一些排序算法的个人总结(初学)
来源:互联网 发布: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
- 关于一些排序算法的个人总结(初学)
- 一些关于概率的算法的个人总结
- Erlang初学:Erlang的一些特点和个人理解总结
- Erlang初学:Erlang的一些特点和个人理解总结
- 总结:python关于一些基本排序算法的实现
- 排序算法个人总结
- 排序算法个人总结
- 一些排序算法的总结
- 排序算法的一些总结
- 排序算法的一些总结
- 关于sql的一些个人总结
- 关于vim的一些个人总结
- 关于ReentrantLock的一些个人总结
- 关于与同学合作的 排序算法显示小应用 的个人总结
- 关于dijkstra算法的个人总结
- 关于冒泡排序算法的初学错误认识
- 排序算法(个人总结)
- java排序算法个人总结
- leveldb的介绍
- C#实现联系不同版本的EXCEL,excelPath是获取到的文件名称
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS6的旋屏控制技巧
- 以太网网关节点在节能计量系统中的设计
- 关于一些排序算法的个人总结(初学)
- 发现重大CSDN漏洞!!!!
- Lesson_for_java_day23--java的网络编程练习(登入界面、上传文档、上传图片、通过网络文本转换)
- 深入理解HTTP协议
- linux杂谈(十七):iscsi存储分离技术
- 教一些很笨的数学题。她喊着我的名字
- The Dirichlet Distribution 狄利克雷分布 (PRML 2.2.1)
- 好饿啊 恩木板
- 最具摩登的台湾汽车旅馆