快速排序思想:
一趟快速排序是:
1,随机产生一数列,选取第一个数(这里也可选其他的数)作为比较的基石,假设这个数为X,这样X=A[0];设两个变量i=0,j=n-1;n是这个数列的长度
2,从前面开始找,找到第一个比A[0]大的数,找到了就与X交换
3,从后面开始找,找到第一个比A[0]小的数,找到了就与X交换
4,重复步骤2,3,直到i=j;
这样一趟快速排序就完成了;第一趟完成之后,X左边的数就全部小于X了,X右边的数九全部大于X,然后采用递归方式对X左边的数和X右边的数进行快速排序。
java实现代码如下:
Java代码 收藏代码
public class QSort {
/**
* @param pData 需要排序的数组
* @param left 左边的位置,初始值为0
* @param right 右边的位置,初始值为数组长度
*/
public static void QuickSort(int[] pData,int left,int right)
{
int i,j;
int first,temp;
i = left;
j = right;
first = pData[left]; //这里选其他的数也行,不过一般选第一个
//一趟快速排序
while(true)
{
//从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数
while((++i)<right-1 && pData[i]<first);
//从最后一个数开始找第一个小于中枢pData[left]的数
while((--j)>left && pData[j]>first);
if(i>=j)
break;
//交换两边找到的数
temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}
//交换中枢
pData[left] = pData[j];
pData[j] = first;
//递归快排中枢左边的数据
if(left<j)
QuickSort(pData,left,j);
//递归快排中枢右边的数据
if(right>i)
QuickSort(pData,i,right);
}
public static void main(String[] args){
int [] pData = new int[5];
for(int i = 0; i< 5; i++)
pData[i] = (int)(Math.random()*100);//Produce 10 random integers
for(int i = 0; i<pData.length; i++){
System.out.print(pData[i]+" ");
}
QSort.QuickSort(pData, 0, pData.length);
System.out.println("\n***********************");
for(int i = 0; i<pData.length; i++){
System.out.print(pData[i]+" ");
}
}
}
相关推荐
一个简单的快速排序算法,用JAVA编写的
实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法的java实现。
快速排序算法实现,随机输入一组数有序输出,用java语言实现
快速排序算法的Java实现。下载后把Package信息稍作修改即可运行。
常见排序算法java实现,包括快速排序,归并排序,堆排序三个常用nlogn复杂度的算法
快速排序算法java实现,此程序所排序数组在程序中给出,没有输入。
冒泡排序、快速排序、直接插入排序、简单选择排序 等经典算法的思想介绍,大白话简单易懂。并用java实现。代码拿去即可用,不需做任何修改! 部分内容: /** * 快排:O(n*logn);如果是从小到大排序; * 思想:选...
java 快速排序 折半查找的界面实现 (递归与分治法)
内部排序算法的实现和测试代码,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序、选择排序等一些列排序算法。
常见排序算法的实现与性能比较JAVA 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0...
java实现的多种排序算法,包括冒泡排序,快速排序,选择排序等
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。 插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm....
java实现的快速排序算法
采用java语言编写的可扩展快速排序算法。 资源简介: Array.java(数组接口), SortArray.java(Array的实现类,可扩展), SortVector.java(承载Array,并使用快速排序算法对数组进行排序) SortTest.java(测试类...
多种排序查找算法的java实现源码,包括选择排序,冒泡排序,改进版冒泡排序,二分查找,归并排序等等
java 常见排序算法的实现 有冒泡、选择、快速、比较等常见的排序算法 还包括二叉树的实现
快速排序方法...给新手一点指引,内置快速排序方法,有详细解析的链接地址,免费的
自己编写的基于java的快速排序和归并算法