c语言快排函数
int a;void qsort(int s,int t){
int i,j,q,x;
i=s;
j=t;
q=a[(s+t)/2];
while(i<=j){
while(a<q){
i++;
}
while(a>q){
j--;
}
if(i<=j){
x=a;
a=a;
a=x;
i++;
j--;
}
}
if(s<j){
qsort(s,j);
}
if(i<t){
qsort(i,t);
}
}
这是什么意思啊,求助!!! 一个递归函数 乐乐学编程 发表于 2020-10-22 19:09
一个递归函数
能具体给我讲讲嘛,不太懂 Y启2020 发表于 2020-10-24 13:31
能具体给我讲讲嘛,不太懂
void qsort(int s,int t) // 函数的定义,定义它是主函数要调用它
{
..............
if(s<j)
{
qsort(s,j); // 当 s < j 时,也调用 qsort() 函数自身
}
if(i<t){
qsort(i,t); // 当 i < t 时, 也调用 qsort() 函数自身
}
}
程序调用自身的编程技巧称为递归( recursion)。也就是在程序运行的过程中调用自己。
构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
例如,求阶乘吧
6 的阶乘 = 6 * 5 的阶乘阶乘 = 6 * 5 * 4 的阶乘阶乘 = 6 * 5 * 4 * 3 的阶乘阶乘 = 6 * 5 * 4 * 3 * 2的阶乘阶乘 = 6 * 5 * 4 * 3 * 2 * 1 的阶乘阶乘
乐乐学编程 发表于 2020-10-24 15:07
void qsort(int s,int t) // 函数的定义,定义它是主函数要调用它
{
..............
谢谢大佬,我们老师没讲过理论,有些专业术语我看不太懂,我会自己去学的,不过还是谢谢你了,谢谢谢谢!!!你好好!!! #include <iostream>
using namespace std;
template <typename T>
void quicksort(const T arr[], int low, int high)
{
if(low >= high) return;
int x = low, y = high;
T key = arr; // 选取low下标的元素作为pivot
while(x < y)
{
while((x < y) && (arr >= key) y--;
if(x < y) arr = arr;
while((x < y) && (arr < key)) x++;
if(x < y) arr = arr;
}
arr = key;
quicksort(arr, low, x-1);
quicksort(arr, y+1, high);
}
写的太垃圾了,头脑优点混乱随便乱写的请不要见怪 Y启2020 发表于 2020-10-25 20:43
谢谢大佬,我们老师没讲过理论,有些专业术语我看不太懂,我会自己去学的,不过还是谢谢你了,谢谢谢谢! ...
满意了,就给个最佳答案吧 如何收藏本帖? 本帖最后由 乐乐学编程 于 2020-10-26 18:47 编辑
sdgm 发表于 2020-10-26 18:33
如何收藏本帖?
你看帖子最上方蓝青色的标题栏那,左数第四个“海淘”,点进去建立一个属于自己的海淘(我忘记了新鱼友能不能,若不能建,你记下我的名字,等你能建了,再来找我,我将帖子的地址发给你)
帮你查了,你现在还不能建立自己的海淘,需要 鱼友I 的级别才能建立,也就是积分达到100,你才3分,加油! 乐乐学编程 发表于 2020-10-26 18:41
你看帖子最上方蓝青色的标题栏那,左数第四个“海淘”,点进去建立一个属于自己的海淘(我忘记了新鱼友 ...
谢谢! sdgm 发表于 2020-10-31 23:01
谢谢!
每天回复十个帖子,回复错误了没有关系的,用不了几天,你就是鱼友I级了,就可以建立自己的淘帖了,收藏一些对你学习有帮助的精彩回答。这对你的学习,是有帮助的
我是今年6月底开始学习C语言的,刚开始回答问题,总是答错,答错了,我就认真地看获得最佳答案,看别人是怎么理解问题的,于是,慢慢地,我对一些常见问题,也能作出一些回答了,这个月非常荣幸地获得了互助团队获得最佳答案的第四名
我相信,我能做到的,你也一定能做到,而且会比我做得更好 ! 风过无痕1989 发表于 2020-11-1 01:35
每天回复十个帖子,回复错误了没有关系的,用不了几天,你就是鱼友I级了,就可以建立自己的淘帖了,收 ...
好的,多谢指点!
页:
[1]