鱼C论坛

 找回密码
 立即注册
查看: 1579|回复: 11

[已解决]c语言快排函数

[复制链接]
发表于 2020-10-22 18:32:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int a[1005];
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[i]<q){
                        i++;
                }
                while(a[j]>q){
                        j--;
                }
                if(i<=j){
                        x=a[i];
                        a[i]=a[j];
                        a[j]=x;
                        i++;
                        j--;
                }
        }
        if(s<j){
                qsort(s,j);
        }
        if(i<t){
                qsort(i,t);
        }
}
这是什么意思啊,求助!!!
最佳答案
2020-10-24 15:07:26
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 的阶乘阶乘

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-22 19:09:19 | 显示全部楼层
一个递归函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-24 13:31:21 | 显示全部楼层

能具体给我讲讲嘛,不太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 15:07:26 | 显示全部楼层    本楼为最佳答案   
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 的阶乘阶乘

递归.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-25 20:43:17 | 显示全部楼层
乐乐学编程 发表于 2020-10-24 15:07
void qsort(int s,int t)   // 函数的定义,定义它是主函数要调用它
{
    ..............

谢谢大佬,我们老师没讲过理论,有些专业术语我看不太懂,我会自己去学的,不过还是谢谢你了,谢谢谢谢!!!你好好!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 01:08:37 | 显示全部楼层
#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]; // 选取low下标的元素作为pivot
        while(x < y)
        {
                while((x < y) && (arr[y] >= key)    y--;
                 if(x < y)    arr[x++] = arr[y];
                 while((x < y) && (arr[x] < key))    x++;
                  if(x < y)    arr[y--] = arr[x];
        }
        arr[x] = key;
        quicksort(arr, low, x-1);
        quicksort(arr, y+1, high);
}

写的太垃圾了,头脑优点混乱随便乱写的请不要见怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 08:59:09 | 显示全部楼层
Y启2020 发表于 2020-10-25 20:43
谢谢大佬,我们老师没讲过理论,有些专业术语我看不太懂,我会自己去学的,不过还是谢谢你了,谢谢谢谢! ...

满意了,就给个最佳答案吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 18:33:07 | 显示全部楼层
如何收藏本帖?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 18:41:39 | 显示全部楼层
本帖最后由 乐乐学编程 于 2020-10-26 18:47 编辑
sdgm 发表于 2020-10-26 18:33
如何收藏本帖?


你看帖子最上方蓝青色的标题栏那,左数第四个“海淘”,点进去建立一个属于自己的海淘(我忘记了新鱼友能不能,若不能建,你记下我的名字,等你能建了,再来找我,我将帖子的地址发给你)

帮你查了,你现在还不能建立自己的海淘,需要 鱼友I 的级别才能建立,也就是积分达到100,你才3分,加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 23:01:41 | 显示全部楼层
乐乐学编程 发表于 2020-10-26 18:41
你看帖子最上方蓝青色的标题栏那,左数第四个“海淘”,点进去建立一个属于自己的海淘(我忘记了新鱼友 ...

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 01:35:37 | 显示全部楼层


每天回复十个帖子,回复错误了没有关系的,用不了几天,你就是鱼友I级了,就可以建立自己的淘帖了,收藏一些对你学习有帮助的精彩回答。这对你的学习,是有帮助的

我是今年6月底开始学习C语言的,刚开始回答问题,总是答错,答错了,我就认真地看获得最佳答案,看别人是怎么理解问题的,于是,慢慢地,我对一些常见问题,也能作出一些回答了,这个月非常荣幸地获得了互助团队获得最佳答案的第四名

我相信,我能做到的,你也一定能做到,而且会比我做得更好 !
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 07:09:27 | 显示全部楼层
风过无痕1989 发表于 2020-11-1 01:35
每天回复十个帖子,回复错误了没有关系的,用不了几天,你就是鱼友I级了,就可以建立自己的淘帖了,收 ...

好的,多谢指点!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 19:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表