您的位置:首页 > 编程语言 > Java开发

Java实现的快速排序算法

2016-02-29 10:33 525 查看

快速排序算法是一种比较重要的算法,他可以在O(n)时间复杂度内对一个数组进行排序。

因此掌握快速排序算法是编程者的一项必要机能。

以外大多数的快速排序算法都是有C或者C++实现的。

本文给大家提供一个Java实现快速排序算法的例子。

package com.test;

import java.util.Random;

public class QuickSort {

 

 public int data[];

 

 /**交换数组中两个数的位置

  * @param start

  * @param des

  */

 private void Swap(int start,int des){

  int temp;

  temp = data[des];

  data[des]=data[start];

  data[start]= temp;

 }

 

 /**从数组中随机抽取一个数,然后把小于这个数的数字放到左边,把大于这个数的数字放到右边,实现一次排序。

  * @param length

  * @param start

  * @param end

  * @return

  */

 private int Partition(int length,int start,int end){

  

   int small = 0;

   int index = 0;

   try {

    if(data == null || length < 0 || start < 0 || end - start > length){

      throw new Exception("Invalid Parameter");

    }

    

    //获取随机数

    Random ra = new Random();

    index = start + (int)ra.nextInt(end - start);

    

    //交换两个数的位置

    Swap(index,end);

    

    small=start-1;

    

    //循环数组把小于随机数的数字放到左边,大于随机数的数字放到右边

    for(index = start;index < end;++index){

     

     if(data[index] < data[end]){

      ++ small;

      if(small != index){

       Swap(index,small);

      }

     }

    }

    ++small;

    Swap(end,small);

    

   } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    System.out.println("index:" + index + "small:" + small + "end:" + end);

   }

   

   return small;

  }

 

 /**采用递归的方式实现快速排序算法

  * @param length

  * @param start

  * @param end

  */

 public void QuickSortImp(int length,int start,int end){

  

  if(start >= end )

   return;

  

  int index = Partition(length,start,end);

  

  if(index > start){

   QuickSortImp(length,start,index -1);

  }

  

  if(end > index){

   QuickSortImp(length,index + 1,end);

  }

  

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: