知识大全 各种排序算法的Java实现

Posted

篇首语:不怕山高,就怕脚软。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 各种排序算法的Java实现相关的知识,希望对你有一定的参考价值。

各种排序算法的Java实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   package sxsexe study algorithm;

  

   public class SortTest

  

       private static final int ARRAY_SEED = ;

       private static final int ARRAY_LENGTH = ;

       private static int[] array = new int[ARRAY_LENGTH];

  

       private static void initArray()

  

           for (int i = ; i < ARRAY_LENGTH; i++)

               array[i] = (int) (Math random() * ARRAY_SEED);

          

      

  

       private static void printArray(boolean before)

  

           String s = null;

           if (before)

               s = before : ;

           else

               s = after : ;

           System out print(s);

           for (int i = ; i < ARRAY_LENGTH; i++)

               System out print(array[i] + );

          

           System out println( );

      

  

       /**

        * @param args

        */

       public static void main(String[] args)

  

           initArray();

           // printArray(true);

           long startTime = System currentTimeMillis();

           quickSort( ARRAY_LENGTH );

           long endTime = System currentTimeMillis();

           // printArray(false);

           System out println( quick sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );

  

           initArray();

           // printArray(true);

           startTime = System currentTimeMillis();

           insertSort();

           endTime = System currentTimeMillis();

           // printArray(false);

           System out println( insert sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );

  

           initArray();

           // printArray(true);

           startTime = System currentTimeMillis();

           selectSort();

           endTime = System currentTimeMillis();

           // printArray(false);

           System out println( select sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );

  

           initArray();

           // printArray(true);

           startTime = System currentTimeMillis();

           bubbleSort();

           endTime = System currentTimeMillis();

           // printArray(false);

           System out println( bubble sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );

  

           initArray();

           // printArray(true);

           startTime = System currentTimeMillis();

           binarySearchSort();

           endTime = System currentTimeMillis();

           // printArray(false);

           System out println( binarySearchSort sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );

      

  

       private static void quickSort(int left int right)

  

           int key = array[left];

           int tmp;

           int start = left;

           int end = right;

  

           while (left < right)

  

               // 首先从右向左找 找到一个小于key的值 进行交换 然后准备从左向右找

               if (array[right] >= key)

                   right ;

                   continue;

              

               // 交换

               tmp = array[right];

               array[right] = array[left];

               array[left] = tmp;

  

               // 从左向右找 找到一个大于key的值进行交换 然后循环

               if (array[left] <= key)

                   left++;

                   continue;

              

               // 交换

               tmp = array[right];

               array[right] = array[left];

               array[left] = tmp;

          

           // 以left right为新数组的起点和终点 递归调用

           if (start < left)

               quickSort(start left);

           if (right < end)

               quickSort(right + end);

  

           // System out println( quick sort over );

      

  

       private static void binarySearchSort()

  

           int i = middle = tmp;

  

           for (; i < ARRAY_LENGTH; i++)

  

               int low = ;

               int high = i ;

  

               tmp = array[i];

  

               while (low <= high)

                   middle = (low + high) / ;

                   if (tmp > array[middle])

                       low = middle + ;

                   else

                       high = middle ;

              

  

               for (int k = i; k > middle; k )

                   array[k] = array[k ];

               array[low] = tmp;

  

          

      

  

       private static void insertSort()

  

           int i = j tmp;

  

           for (; i < ARRAY_LENGTH; i++)

               tmp = array[i];

               j = i;

               while (j > && array[j ] > tmp)

                   array[j] = array[j ];

                   j ;

              

               array[j] = tmp;

          

      

  

       private static void selectSort()

  

           int i = minValue tmp;

           int j = i + ;

  

           for (; i < ARRAY_LENGTH ; i++)

               minValue = array[i];

               for (j = i + ; j < ARRAY_LENGTH; j++)

                   if (array[j] < minValue)

                       minValue = array[j];

                       tmp = array[j];

                       array[j] = array[i];

                       array[i] = tmp;

                  

              

          

      

  

       private static void bubbleSort()

  

           int i = ;

           int j tmp;

  

           for (; i < ARRAY_LENGTH; i++)

               for (j = i + ; j < ARRAY_LENGTH; j++)

                   if (array[j] < array[i])

                       tmp = array[j];

                       array[j] = array[i];

                       array[i] = tmp;

                  

              

          

      

  

cha138/Article/program/Java/hx/201311/26125

相关参考