你的整个main函数,其实只是把小于m的数放在了左边,大于m的数放在了右边。
只是比较了一趟。这是最大的问题。
然后你应该把0到mid跟mid到99之间再进行快排,这样递归下去,才能算是一个完整的排序。
推荐在网上查找一个完整的程序,你就会发现自己的问题了。
import javautilArrays;
/
@author zhouhui
@version 100
@Since Otc 8, 2013
/
public class FastSort
{
/
@param args
/
public static void main(String[] args)
{
int a[] = new int[]{6,3,9,1,8,2,4,10,7,5};
Systemoutprintln("快速排序前:");
for(Integer i : a)
{
Systemoutprint(i + "\t");
}
Systemoutprintln();
sortUnit(a, 0, alength-1);
Systemoutprintln("快速排序后:");
for(Integer i : a)
{
Systemoutprint(i + "\t");
}
}
/
完成一次单元排序
@return
/
public static void sortUnit(int array[],int begin,int end)
{
int key = array[begin];
int low = begin;
int high = end;
while(low < high)
{
while(array[high] >= key && high > low)
{
--high;
}
//比key小的放左边
array[low] = array[high];
while(array[low] <= key && low < high)
{
++low;
}
//比key大的放右边
array[high] = array[low];
Systemoutprintln(low + " " + high);
}
array[high] = key;
Systemoutprintln(ArraystoString(array));
if(high - begin > 1)
{
sortUnit(array, begin, high-1);
}
if(end - high > 1)
{
sortUnit(array, high + 1, end);
}
// return high;
}
/ public static void fastSort(int array[],int low,int high)
{
if(low >= high)
{
return;
}
int index = sortUnit(array, low, high);
fastSort(array, low, index-1);
fastSort(array, index+1, high);
}/
}
有问题欢迎继续提问,满意就采纳并加点分分吧,谢谢!
以上就是关于菜鸟求教C语言快速排序法全部的内容,包括:菜鸟求教C语言快速排序法、写一个程序,十个数字的数组排序,要用快速排序quicksort的方法,不要复制粘贴、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)