现在的位置: 首页 > 综合 > 正文

冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)

2013年10月10日 ⁄ 综合 ⁄ 共 3859字 ⁄ 字号 评论关闭

冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)

  1. public class Sort
  2. {
  3.     public void swap(int a[], int i, int j)
  4.     {
  5.         int tmp = a[i];
  6.         a[i] = a[j];
  7.         a[j] = tmp;
  8.     }
  9.     public int partition(int a[], int low, int high)
  10.     {
  11.         int pivot, p_pos, i;
  12.         p_pos = low;
  13.         pivot = a[p_pos];
  14.         for (i = low + 1; i <= high; i++)
  15.         {
  16.             if (a[i] > pivot)
  17.             {
  18.                 p_pos++;
  19.                 swap(a, p_pos, i);
  20.             }
  21.         }
  22.         swap(a, low, p_pos);
  23.         return p_pos;
  24.     }
  25.     public void quicksort(int a[], int low, int high)
  26.     {
  27.         int pivot;
  28.         if (low < high)
  29.         {
  30.             pivot = partition(a, low, high);
  31.             quicksort(a, low, pivot - 1);
  32.             quicksort(a, pivot + 1, high);
  33.         }
  34.     }
  35.     public static void main(String args[])
  36.     {
  37.         int vec[] = new int[] { 771927, -91934 };
  38.         int temp;
  39.         
  40.         System.out.println("对37, 47, 23, -5, 19, 56进行排序");
  41.         // 选择排序法(Selection Sort)
  42.         long begin = System.currentTimeMillis();
  43.         for (int k = 0; k < 1000000; k++)
  44.         {
  45.             for (int i = 0; i < vec.length; i++)
  46.             {
  47.                 for (int j = i; j < vec.length; j++)
  48.                 {
  49.                     if (vec[j] > vec[i])
  50.                     {
  51.                         temp = vec[i];
  52.                         vec[i] = vec[j];
  53.                         vec[j] = temp;
  54.                     }
  55.                 }
  56.             }
  57.         }
  58.         long end = System.currentTimeMillis();
  59.         System.out.println(); //另起一行
  60.         System.out.println("选择法用时为:" + (end - begin) + "/n排序结果:");
  61.         // 打印排序好的结果
  62.         for (int i = 0; i < vec.length; i++)
  63.         {
  64.             System.out.print(vec[i]);
  65.             System.out.print("  ");
  66.         }
  67.         // 冒泡排序法(Bubble Sort)
  68.         begin = System.currentTimeMillis();
  69.         for (int k = 0; k < 1000000; k++)
  70.         {
  71.             for (int i = 0; i < vec.length; i++)
  72.             {
  73.                 for (int j = i; j < vec.length - 1; j++)
  74.                 {
  75.                     if (vec[j + 1] > vec[j])
  76.                     {
  77.                         temp = vec[j + 1];
  78.                         vec[j + 1] = vec[j];
  79.                         vec[j] = temp;
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.         end = System.currentTimeMillis();
  85.         System.out.println(); //另起一行
  86.         System.out.println("冒泡法用时为:" + (end - begin)+ "/n排序结果:");
  87.         // 打印排序好的结果
  88.         for (int i = 0; i < vec.length; i++)
  89.         {
  90.             System.out.print(vec[i]);
  91.             System.out.print("  ");
  92.         }
  93.         // 插入排序法(Insertion Sort)
  94.         begin = System.currentTimeMillis();
  95.         for (int k = 0; k < 1000000; k++)
  96.         {
  97.             for (int i = 1; i < vec.length; i++)
  98.             {
  99.                 int j = i;
  100.                 while (vec[j - 1] < vec[i])
  101.                 {
  102.                     vec[j] = vec[j - 1];
  103.                     j--;
  104.                     if (j <= 0)
  105.                     {
  106.                         break;
  107.                     }
  108.                 }
  109.                 vec[j] = vec[i];
  110.             }
  111.         }
  112.         end = System.currentTimeMillis();
  113.         System.out.println(); //另起一行
  114.         System.out.println("插入法用时为:" + (end - begin)+ "/n排序结果:");
  115.         // 打印排序好的结果
  116.         for (int i = 0; i < vec.length; i++)
  117.         {
  118.             System.out.print(vec[i]);
  119.             System.out.print("  ");
  120.         }
  121.         // 快速排序法(Quick Sort)
  122.         Sort s = new Sort();
  123.         begin = System.currentTimeMillis();
  124.         for (int k = 0; k < 1000000; k++)
  125.         {
  126.             s.quicksort(vec, 05);
  127.         }
  128.         end = System.currentTimeMillis();
  129.         System.out.println(); //另起一行
  130.         System.out.println("快速法用时为:" + (end - begin)+ "/n排序结果:");
  131.         // 打印排序好的结果
  132.         for (int i = 0; i < vec.length; i++)
  133.         {
  134.             System.out.print(vec[i]);
  135.             System.out.print("  ");
  136.         }
  137.     }
  138. }

 

抱歉!评论已关闭.