黑马程序员技术交流社区
标题:
【快速排序】 这段代码有什么问题?
[打印本页]
作者:
Mokill0911
时间:
2014-9-1 00:32
标题:
【快速排序】 这段代码有什么问题?
//快速排序;
/*快速排序的算法思想:选定一个枢纽元素,对待排序序列进行分割,
* 分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素,
* 再对这两个分割好的子序列进行上述的过程。*/
public static void swap(int a, int b)
{
int temp;
temp= a;
a= b;
b= temp;
}
public static int partition(int [] arr, int low, int high)
{
int pivot= arr [low];// 采用子序列的第一个元素作为枢纽元素;
while( low< high)
{
while(low< high && arr[high]>= pivot)
//^从后往前,在后半部分中寻找第一个小于枢纽元素的元素;
{
--high;
}
swap (arr[low ], arr[high] );
//^将这个比枢纽元素小的元素交换到前半部分;
while(low< high && arr[low]<= pivot)
//^从前往后,在前半部分中寻找第一个大于枢纽元素的元素;
{
++low;
}
swap (arr[low ], arr[high ] );
//^将这个比枢纽元素大的元素交换到后半部分
}
return low;//返回枢纽元素所在的位置;
}
public static void QuickSort(int[] array, int low, int high)
{
if(low< high)
{
int n= partition (array, low, high );
QuickSort (array, low, n);
QuickSort (array, n+1, high );
}
}
复制代码
RT 当我在主函数里调用
QuickSort 方法时却出现问题,尝试了几次往low和high里传值都出现了运行结果不正确。
请大家指点一二,先行谢过:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2