189 8069 5689

快排java代码,快排的代码

快速排序 java,我的代码如下,出来的结果一直不对,谁给我看看什么原因?

您好,按照你现在的程序你编译后的结果应该是数组里面的数字,大的都到了右边,小的都到了左边,但是右边大的和左边小的并没有进一步排序,问题就在于

十年的威海网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整威海建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“威海网站设计”,“威海网站推广”以来,每个客户项目都认真落实执行。

你的这部分代码根本就没有用的,在main方法里面没有调用,在patition方法中也没有调用,导致这部分代码就没有使用,所以也不可能完成递归,对左右两边的数字没有办法进一步排序,希望对你有用。

请问一下java快速排序源代码

快速排序:

package org.rut.util.algorithm.support;

import org.rut.util.algorithm.SortUtil;

/**

* @author treeroot

* @since 2006-2-2

* @version 1.0

*/

public class QuickSort implements SortUtil.Sort{

/* (non-Javadoc)

* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

public void sort(int[] data) {

quickSort(data,0,data.length-1);

}

private void quickSort(int[] data,int i,int j){

int pivotIndex=(i+j)/2;

//swap

SortUtil.swap(data,pivotIndex,j);

int k=partition(data,i-1,j,data[j]);

SortUtil.swap(data,k,j);

if((k-i)1) quickSort(data,i,k-1);

if((j-k)1) quickSort(data,k+1,j);

}

/**

* @param data

* @param i

* @param j

* @return

*/

private int partition(int[] data, int l, int r,int pivot) {

do{

while(data[++l]pivot);

while((r!=0)data[--r]pivot);

SortUtil.swap(data,l,r);

}

while(lr);

SortUtil.swap(data,l,r);

return l;

}

}

改进后的快速排序:

package org.rut.util.algorithm.support;

import org.rut.util.algorithm.SortUtil;

/**

* @author treeroot

* @since 2006-2-2

* @version 1.0

*/

public class ImprovedQuickSort implements SortUtil.Sort {

private static int MAX_STACK_SIZE=4096;

private static int THRESHOLD=10;

/* (non-Javadoc)

* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

public void sort(int[] data) {

int[] stack=new int[MAX_STACK_SIZE];

int top=-1;

int pivot;

int pivotIndex,l,r;

stack[++top]=0;

stack[++top]=data.length-1;

while(top0){

int j=stack[top--];

int i=stack[top--];

pivotIndex=(i+j)/2;

pivot=data[pivotIndex];

SortUtil.swap(data,pivotIndex,j);

//partition

l=i-1;

r=j;

do{

while(data[++l]pivot);

while((r!=0)(data[--r]pivot));

SortUtil.swap(data,l,r);

}

while(lr);

SortUtil.swap(data,l,r);

SortUtil.swap(data,l,j);

if((l-i)THRESHOLD){

stack[++top]=i;

stack[++top]=l-1;

}

if((j-l)THRESHOLD){

stack[++top]=l+1;

stack[++top]=j;

}

}

//new InsertSort().sort(data);

insertSort(data);

}

/**

* @param data

*/

private void insertSort(int[] data) {

int temp;

for(int i=1;idata.length;i++){

for(int j=i;(j0)(data[j]data[j-1]);j--){

SortUtil.swap(data,j,j-1);

}

}

}

}

java快速排序代码中SwapReferences()方法是什么?代码怎么写?

/**

 * 快速排序

 */

private static void quickSort ( int[] array, int start, int end )

{

if (start  end)

{

int key = array;

int i = start;

for ( int j = start + 1; j  end + 1; j++ )

{

if (key  array[j])

{

int temp = array[j];

array[j] = array[i + 1];

array[i + 1] = temp;

i++;

}

}

array = array[i];

array[i] = key;

quickSort (array, start, i - 1);

quickSort (array, i + 1, end);

}

}

int[] array = new int[] { 11, 213, 134, 65, 77, 78, 23, 43 };

quickSort (array, 0, array.length - 1);

System.out.println (Arrays.toString (array));

java快速排序的书问题,怎么解决

把int key=num;这句移到while(true)循环前,也就是把int key=num;在ab的情况下执行,这样这个快速排序Java程序就没问题了.

完整的Java快速排序程序如下(改动的地方见注释)

public class A {

public void quickSort(int[] num,int start,int end) {

int a = start;

int b = end;

if(ab){

return;

}

int key=num;//把这句移到这里

while(true){

while(ba){

if(num[b]key){

int temp;

temp=num[a];

num[a]=num[b];

num[b]=temp;

break;

}else

b--;

}

while(ba)

{

if(keynum[a]){

int temp;

temp=num[a];

num[a]=num[b];

num[b]=temp;

break;

}else

a++;

}

if(a==b)

break;

}

quickSort(num,start,a-1);

quickSort(num,a+1,end);

}

public static void main(String[] args) {

int[] a={34,54,54,32,54,756,123,22,11,55,7};

A e=new A();

e.quickSort(a,0,a.length-1);

for(int w=0;wa.length;w++){

System.out.println(a[w]);

}

}

}

举一个简单java快速排序的例子?

Java中的快速排序一个简单的例子

public class QuickSort {

public static void sort(Comparable[] data, int low, int high) {

// 枢纽元,一般以第一个元素为基准进行划分

Comparable pivotKey = data[low];

// 进行扫描的指针i,j;i从左边开始,j从右边开始

int i = low;

int j = high;

if (low high) {

// 从数组两端交替地向中间扫描

while (i j) {

while (i j data[j].compareTo(pivotKey) 0) {

j--; }

// end while

if (i j) {

// 比枢纽元素小的移动到左边

data[i] = data[j];

i++;

}

// end if

while (i j data[i].compareTo(pivotKey) 0) {

i++;

}

// end while

if (i j) {

// 比枢纽元素大的移动到右边

data[j] = data[i];

j--;

}

// end if

}

// end while

// 枢纽元素移动到正确位置

data[i] = pivotKey;

// 前半个子表递归排序

sort(data, low, i - 1);

// 后半个子表递归排序

sort(data, i + 1, high);

}

// end if

}

// end sort

public static void main(String[] args) {

// 在JDK1.5版本以上,基本数据类型可以自动装箱

// int,double等基本类型的包装类已实现了Comparable接口

Comparable[] c = { 4, 9, 23, 1, 45, 27, 5, 2 };

sort(c, 0, c.length - 1);

for (Comparable data : c) {

System.out.println(data);

}

}

}

真的是很服你,你把这个新建一个类放里面

在主方法里面这样写:

自己建个数组Comparable[] data,

定义参数int low, int high

QuickSort qs = new QuickSort();

qs.sort([] data, low, high);

求使用java实现的快排算法

① 代码:

public class quicksortdemo {

private int array[];

private int length;

public void sort(int[] inputArr) {

if (inputArr == null || inputArr.length == 0) {

return;

}

this.array = inputArr;

length = inputArr.length;

quickSort(0, length - 1);

}

private void quickSort(int lowerIndex, int higherIndex) {

int i = lowerIndex;

int j = higherIndex;

// calculate pivot number

int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2];

// Divide into two arrays

while (i = j) {

while (array[i]  pivot) {

i++;

}

while (array[j]  pivot) {

j--;

}

if (i = j) {

swap(i, j);                

i++;

j--;

}

}

// call quickSort() method recursively

if (lowerIndex  j)

quickSort(lowerIndex, j);

if (i  higherIndex)

quickSort(i, higherIndex);

}

private void swap(int i, int j) {

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

public static void main(String a[]){

quicksortdemo sorter = new quicksortdemo();

int[] input = {24,2,45,20,56,75,2,56,99,53,12};

sorter.sort(input);

for(int i:input){

System.out.print(i);

System.out.print(" ");

}

}

}

② 运行:

c:\java quicksortdemo

2 2 12 20 24 45 53 56 56 75 99


本文名称:快排java代码,快排的代码
分享路径:http://cdxtjz.com/article/hcecsi.html

其他资讯