Java排序算法
java吧
全部回复
仅看楼主
level 1
绝情酷哥 楼主
package com.cucu.test;/** * @author http://www.linewell.com [email protected] * @version 1.0 */public class Sort { public void swap(int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } public int partition(int a[], int low, int high) { int pivot, p_pos, i; p_pos = low; pivot = a[p_pos]; for (i = low + 1; i <= high; i++) { if (a[i] > pivot) { p_pos++; swap(a, p_pos, i); } } swap(a, low, p_pos); return p_pos; } public void quicksort(int a[], int low, int high) { int pivot; if (low < high) { pivot = partition(a, low, high); quicksort(a, low, pivot - 1); quicksort(a, pivot + 1, high); } } public static void main(String args[]) { int vec[] = new int[] { 37, 47, 23, -5, 19, 56 }; int temp; //选择排序法(Selection Sort) long begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length; j++) { if (vec[j] > vec[i]) { temp = vec[i]; vec[i] = vec[j]; vec[j] = temp; } } } } long end = System.currentTimeMillis(); System.out.println("选择法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } // 冒泡排序法(Bubble Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i; j < vec.length - 1; j++) { if (vec[j + 1] > vec[j]) { temp = vec[j + 1]; vec[j + 1] = vec[j]; vec[j] = temp; } } } } end = System.currentTimeMillis(); System.out.println("冒泡法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //插入排序法(Insertion Sort) begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { for (int i = 1; i < vec.length; i++) { int j = i; while (vec[j - 1] < vec[i]) { vec[j] = vec[j - 1]; j--; if (j <= 0) { break; } } vec[j] = vec[i]; } } end = System.currentTimeMillis(); System.out.println("插入法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } //快速排序法(Quick Sort) Sort s = new Sort(); begin = System.currentTimeMillis(); for (int k = 0; k < 1000000; k++) { s.quicksort(vec, 0, 5); } end = System.currentTimeMillis(); System.out.println("快速法用时为:" + (end - begin)); //打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } }}以下是运行结果:选择法用时为:2345647372319-5冒泡法用时为:1725647372319-5插入法用时为:785647372319-5快速法用时为:2975647372319-5
2004年11月24日 13点11分 1
level 0
这个冒泡排序法,怎么理解呀
2004年12月12日 09点12分 2
level 0
你是梨树的吗
2004年12月12日 11点12分 3
level 0
看来仁兄是个高手,加我的QQ吧,290359552
2004年12月16日 12点12分 4
level 2
整理的挺好顶
2004年12月22日 09点12分 5
level 0
是啊,真好啊。
2004年12月23日 11点12分 6
level 2
hehe
2004年12月26日 08点12分 7
level 0
这个考试的时候考过!!
2004年12月31日 07点12分 8
level 0
我还没看,不过以保存到,我的U盘上了
2004年12月31日 07点12分 9
level 0
真是撑的Arrays.sort()
2005年01月06日 08点01分 10
level 0
楼上的, Arrays.sort()用的是哪种排序你知道?
2005年01月10日 12点01分 11
level 0
大哥!!~~~ 你好强啊1!!~! 小弟 我!!!~~~ 想学学 !!     如果 有 空!!~~ 加我 QQ :306866162
2005年01月12日 14点01分 12
level 0
在我手提电脑上为:选择法用时为:23
15647372319
-5冒泡法用时为:
18056473723
19-5插入法用时为:805647372319-5快速法用时为:3005647372319-5
2005年01月22日 08点01分 13
level 1
绝情酷哥 楼主
呵呵,感谢这位朋友参与测试工作!
2005年01月22日 10点01分 14
level 1
有意思吗???就是撑的!!!!!!!!!
2005年02月18日 09点02分 15
level 1
各种基本的算法随处都可以找到,关键是不要一不小心误导了大家,要知道大多数人研究算法是没有出头之日的,除非天才。在别的语言中还需要个冒泡排序,在java中顶多需要个冒泡排序。
2005年02月18日 19点02分 16
level 1
同意 楼上的说法
2005年02月21日 05点02分 17
level 0
感觉麻烦了一点,
2005年03月02日 09点03分 18
level 1
上课时先讲了这个冒泡排序,然后再讲的类库,晕~
2005年03月02日 10点03分 19
level 1
大哥数据结构学的很好,可我总觉得我什么都不会光会排序、查找什么的好像根现实不太。。。。,小弟现在在学软件工程还是这个不错但又觉得太遥远了晕
2005年03月03日 11点03分 20
1 2 3 4 5 尾页