posts - 89,  comments - 98,  trackbacks - 0

          1? Java排序算法?
          ? package com.cucu.test;

          /**
          ?* @author http://www.linewell.com <a href=mailto:cg@linewell.com>cg@linewell.com</a>
          ?* @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]);
          ??? }
          ? }

          }
          以下是運行結果:
          選擇法用時為: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?

          posted on 2006-09-01 10:31 水煮三國 閱讀(463) 評論(1)  編輯  收藏 所屬分類: J2SE

          FeedBack:
          # re: 轉 JAVA一篇排序算法文章
          2007-06-27 23:08 | agoo
          兄弟你的冒泡排序有錯吧,我動行的結果可是不對的  回復  更多評論
            
          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211419
          • 排名 - 266

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新丰县| 百色市| 吉林省| 青田县| 晋江市| 安宁市| 吉安市| 四平市| 江门市| 新营市| 藁城市| 桃园县| 卓资县| 江阴市| 宁南县| 丰台区| 壶关县| 济南市| 乳山市| 博爱县| 华容县| 九龙坡区| 富民县| 泉州市| 陇南市| 图片| 酒泉市| 沂南县| 民和| 安仁县| 山西省| 盐津县| 泗阳县| 盐边县| 抚顺县| 宜州市| 卓尼县| 靖宇县| 兰考县| 盈江县| 班戈县|