« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
快升级了.... |
Blog信息 |
blog名称:程序员之路 日志总数:61 评论数量:215 留言数量:4 访问次数:461179 建立时间:2006年5月8日 |

| |
[源码分享]Java排序算法 文章收藏, 网上资源, 读书笔记, 软件技术, 电脑与网络, 科学研究, 校园生活, 职业生涯
noahj 发表于 2006/5/23 19:38:22 |
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]); } } } 以下是运行结果: 选择法用时为:234 56 47 37 23 19 -5 冒泡法用时为:172 56 47 37 23 19 -5 插入法用时为:78 56 47 37 23 19 -5 快速法用时为:297 56 47 37 23 19 -5 |
|
回复:Java排序算法 文章收藏, 网上资源, 读书笔记, 软件技术, 电脑与网络, 科学研究, 校园生活, 职业生涯
路人(游客)发表评论于2007/7/3 16:06:35 |
冒泡排序有问题,我来改正哈,参考下:
for(int i=0;i<vec.length;i++){ for(int j=vec.length-1;j>i;j--){ if(vec[j]>vec[j-1]){ temp=vec[j-1]; vec[j-1]=vec[j]; vec[j]=temp; } } } System.out.println("冒泡排序运行如下:"); for(int i=0;i<vec.length;i++){ System.out.println(vec[i]); } |
|
回复:Java排序算法 文章收藏, 网上资源, 读书笔记, 软件技术, 电脑与网络, 科学研究, 校园生活, 职业生涯
linpyi(游客)发表评论于2008/9/25 9:28:46 |
for (int k = 0; k < 1000000; k++) { for (int i = 0; i < vec.length; i++) { for (int j = i+1; j < vec.length; j++) { if (vec[j] > vec[i]) { temp = vec[i]; vec[i] = vec[j]; vec[j] = temp; } }
} }
选择排序 |
|
» 1 »
|