「java最快排序」java实现快速排序

博主:adminadmin 2023-01-08 16:21:13 798

今天给各位分享java最快排序的知识,其中也会对java实现快速排序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

介绍小JAVA的快速排序法 最好给个例子

它的工作看起来仍然象一个二叉树。首先我们选择一个中间值middle程序中我们使用数组中间值,然后 把比它小的放在左边,大的放在右边(具体的实现是从两边找,找到一对后交换)。然后对两边分别使 用这个过程(最容易的方法——递归)。 public class KuaiSu { public static void main(String[] args) { int a[]={5,8,3,7,2,9,33,22,56,78}; sort(a, 0, a.length - 1); for(int i = 0; i a.length; i++) { System.out.print(a[i] + " "); } } public static void sort(int a[], int left, int right) { int i, j; int middle, t; i = left; j = right; middle = a[(i + j) / 2]; do { //从左侧找大于中间值的数 while((a[i] middle) (i right)) { i++; } //从右侧找小于中间值的数 while((a[j] middle) (j left)) { j--; } //找到了一对就交换 if(i = j) { t = a[i]; a[i] = a[j]; a[j] = t; i++; j--; } } while(i = j); if(left j) { sort(a, left, j); } if(right i) { sort(a, i, right); } } }

java快速排序问题

调用QuictSort类的sort函数, 把返回值存放在arraya中

例如:int[] array = {24,8,1,44,13,34,11,64,23,98,43,25};

sort(array, 0, array.length);

在sort函数中,首先middle = pData[left] 为24,然后与8作比较. 因为8 24, 所以接着比较 1 24 ,一直比较下去, 直到第pData[i]个数的值 大于middle 停止比较。

然后用pData[j]于middle比较, 此时是用25 与middle比较,25 24 ,所以--j后接着比较...直到pData[j] = 23 时 退出循环

然后把44 与 23交换位置 。。。

然后。。。

我觉得这样说的你未必能看懂 你自己把程序调试一下,跟踪一下,很快就能知道快排的思路了。。。

排序都有哪几种方法?用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

/ /使用快速排序方法对a[ 0 :n- 1 ]排序

从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点

把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点

递归地使用快速排序方法对left 进行排序

递归地使用快速排序方法对right 进行排序

所得结果为l e f t + m i d d l e + r i g h t

求java快速排序的正确代码

一趟快速怕序的具体做法是:附设两个指针low和high,他们的初值分别为low和high,设枢轴记录的关键字为privotkey,则首先从high所指位置向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low所指向的位置起向后搜索,找到第一个关键字大于privotkey的记录和枢轴记录互相交换,重复这两步直至low==high位置.

import java.util.concurrent.Executor;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

public class 快速排序_1 {

public static void main(String[] args) throws InterruptedException {

int test[] = {15,23,56,7,13,52,20,7};

new 快速排序_1().qSort(test, 0, test.length-1);

for(int k:test) System.out.println(k);

}

public void qSort(int []array,int low,int high){

if(low

int privot=partition(array,low,high);

qSort(array,low,privot-1);

qSort(array,privot+1,high);

}

}

public int partition(int [] array,int low,int high){

/**

* 选择 low位置 作为曲轴(支点)

*/

int pivot=array[low];

int temp=0;

/**

* 如果 low

*/

while(low

/**

* 先从 high端 开始判断

*/

while(low=pivot) high--;

/**

* 进行 置换操作

*/

if(low

array[low]=array[high];

low++;

}

/**

* 从 low 端判断

*/

while(low

/**

* 进行 置换操作

*/

if(low

array[high]=array[low];

high--;

}

}

array[low]=pivot;

return low;

}

}

java中快速排序的实现思路

快速排序法:快速排序法号称是目前最优秀的算法之一,实现思路是,将一个数组的排序问题看成是两个小数组的排序问题,而每个小的数组又可以继续看成更小的两个数组,一直递归下去,直到数组长度大小最大为2

关于java最快排序和java实现快速排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。