knrt.net
当前位置:首页 >> jAvA快速排序法 >>

jAvA快速排序法

//快速排序(交换排序),不稳定,时间复杂度nlog2n,空间复杂度log2n class QuickSort{ public static void quickSort(int[] array,int low,int high){ if(low>=high){ //递归出口 return; } int index=array[low]; //设置key进行划分 int i=low; int j=high; while(i

java常见的排序分为:1 插入类排序主要就是对于一个已经有序的序列中,插入一个新的记录.它包括:直接插入排序,折半插入排序和希尔排序2 交换类排序这类排序的核心就是每次比较都要“交换”,在每一趟排序都会两两发生一系列的“

* 步骤为: * 1. 从数列中挑出一个元素,称为 "基准"(pivot), * 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分割之后,该基准是它的最后位置.这个称

/** * 快速排序 * 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists). * 步骤为: * 1. 从数列中挑出一个元素,称为 "基准"(pivot), * 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,

input java.util.*; public class a { public static void main(String[] args){ int [] a = new int[5,4,7,12,6,78,24,1]; Arrays.sort(a); System.out.println("排序后:"); for(int index=0; index<a.length;i++){ System.out.println(a[index]); } } }

快速排序是对冒泡排序的一种改进.它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进

package quickSort; import java.util.Arrays;/** * * * 快速排序的思想:分区法+挖坑填数法. * 1、先从数列中取出一个数作为枢纽关键字,一般用第一个元素 * 2、分区过程,将比这个枢纽关键字大的数全放在它的右边,把小于或者等于的数全放

它的工作看起来仍然象一个二叉树.首先我们选择一个中间值middle程序中我们使用数组中间值,然后 把比它小的放在左边,大的放在右边(具体的实现是从两边找,找到一对后交换).然后对两边分别使 用这个过程(最容易的方法递归

本人特地给你编的代码亲测 public class QuickSort {public static int Partition(int a[],int p,int r){ int x=a[r-1]; int i=p-1; int temp; for(int j=p;j<=r-1;j++){ if(a[j-1]<=x){ // swap(a[j-1],a[i-1]); i++; temp=a[j-1]; a[j-1]=a[i-1]; a[i-1]=temp;} } //swap(a[r-1,a[i+1-1]);

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码./ /使用快速排序方法对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

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com