黑马程序员技术交流社区
标题:
快速排序法.,问题挺多的,麻烦高手指点一下。小妹谢了!
[打印本页]
作者:
Mr.Whatever
时间:
2012-5-8 12:04
标题:
快速排序法.,问题挺多的,麻烦高手指点一下。小妹谢了!
package com.ceshi.aa;
//目前无法运行,求指教
public class QuickSort {
/**
* 快速排序法
* @param args
*
*/
/* 1.将一组数组传入方法,设left=起始0;right=末尾,a.length-1;
* 2.if(left<right)向下执行
* 3.一般设第一个数为枢轴值k
* 4. 设置循环:while(a[right]>=k)right--;
* 5.跳出循环后使用swap(数组,right,left)互换值;
* 6.7:同4、5:while(a[left]<=k)left++;退出循环值互换;
* 8.return left;
* */
public static int QuickSort(int[] a,int left,int right){
int key=a[0];
while(a[right]>=key)right--;
int temp=a[right];
a[right]=a[left];
a[left]=temp;
while(a[left]<=key)left++;
temp=a[right];
a[right]=a[left];
a[left]=temp;
return left;
}
/**
* 递归控制快速排序
* int point:枢轴值
* 通过枢轴值往下带入,递归排列出有问题的数组,
*/
public static void Quick(int[] a,int left,int right){
if(left<right){
int point;
point=QuickSort(a,left,right);
Quick(a,left,point-1);
Quick(a,point+1,right);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int pass[]={0,3,4,6,8,1,2,1,5,6,7,889,3,6,6};
Quick(pass,0,pass.length);
for (int i = 0; i < pass.length; i++) {
System.out.println(pass
);
}
}
}
作者:
Mr.Whatever
时间:
2012-5-8 20:57
黑马的高手呢?
作者:
黑马罗坚
时间:
2012-5-8 21:03
public static int QuickSort(int[] a,int left,int right){
int key=a[0];
while(a[right]>=key&&right!=0)right--;
int temp=a[right];
a[right]=a[left];
a[left]=temp;
while(a[left]<=key&&left!=a.length-1)left++;
int pass[]={0,3,4,6,8,1};
Quick(pass,0,pass.length-1);
System.out.println(Arrays.toString(pass));
虽然不报错了 但没实现排序 而且数组一大 容易造成递归过多栈内存溢出 而且这算法应该还没冒泡快把~! 想要加快排序速度 一轮循环交换一次数据就可以了
作者:
Mr.Whatever
时间:
2012-5-14 00:43
谢谢2楼师兄
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2