知识大全 各种排序算法的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

相关参考

知识大全 常见排序算法的java实现

  最近在面试遇到很多排序算法问题总结一下  定义数组如下  [java]  int[]array=newint[];  int[]array=newint[];  首先是插入排序  [java]  

知识大全 java的排序算法

  插入排序:    packagerututilalgorithmsupport;  importrututilalgorithmSortUtil;  publicclassInsertSortim

知识大全 面试笔试必用-必须掌握的Java排序算法

面试笔试必用-必须掌握的Java排序算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Java排序

知识大全 使用java编写排序算法

   publicclassSort           &

知识大全 关于各种排列组合java算法实现方法

  一利用二进制状态法求排列组合此种方法比较容易懂但是运行效率不高小数据排列组合可以使用复制代码代码如下:importjavautilArrays;  //利用二进制算法进行全排列//count://

知识大全 Shell排序

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

知识大全 排序 - 各种内部排序方法的比较和选择(二)

  ()在基于比较的排序方法中每次比较两个关键字的大小之后仅仅出现两种可能的转移因此可以用一棵二叉树来描述比较判定  过程  当文件的n个关键字随机分布时任何借助于比较的排序算法至少需要O(nlgn)

知识大全 排序算法的各趟排序算法

  以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态  ()直接插入排序()希尔排序()冒泡排序()快速排序  ()直接选择排序()堆排序()归并排序()基数排序  上述方

知识大全 排序算法的各趟排序算法

  以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态  ()直接插入排序()希尔排序()冒泡排序()快速排序  ()直接选择排序()堆排序()归并排序()基数排序  上述方

知识大全 第8章排序(算法设计)习题练习

将哨兵放在R[n]中被排序的记录放在R[n]中重写直接插入排序算法以单链表作为存储结构实现直接插入排序算法 设计一算法使得在尽可能少的时间内重排数组将所有取负值的关键字放在所有取非负值的关键