菜鸟求教C语言快速排序法

菜鸟求教C语言快速排序法,第1张

你的整个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的方法,不要复制粘贴、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10212847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存