Y启2020 发表于 2020-10-22 18:32:54

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:19

一个递归函数

Y启2020 发表于 2020-10-24 13:31:21

乐乐学编程 发表于 2020-10-22 19:09
一个递归函数

能具体给我讲讲嘛,不太懂

乐乐学编程 发表于 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 的阶乘阶乘

Y启2020 发表于 2020-10-25 20:43:17

乐乐学编程 发表于 2020-10-24 15:07
void qsort(int s,int t)   // 函数的定义,定义它是主函数要调用它
{
    ..............


谢谢大佬,我们老师没讲过理论,有些专业术语我看不太懂,我会自己去学的,不过还是谢谢你了,谢谢谢谢!!!你好好!!!

大神本人 发表于 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下标的元素作为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);
}

写的太垃圾了,头脑优点混乱随便乱写的请不要见怪

乐乐学编程 发表于 2020-10-26 08:59:09

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

满意了,就给个最佳答案吧

sdgm 发表于 2020-10-26 18:33:07

如何收藏本帖?

乐乐学编程 发表于 2020-10-26 18:41:39

本帖最后由 乐乐学编程 于 2020-10-26 18:47 编辑

sdgm 发表于 2020-10-26 18:33
如何收藏本帖?

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

帮你查了,你现在还不能建立自己的海淘,需要 鱼友I 的级别才能建立,也就是积分达到100,你才3分,加油!

sdgm 发表于 2020-10-31 23:01:41

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

谢谢!

风过无痕1989 发表于 2020-11-1 01:35:37

sdgm 发表于 2020-10-31 23:01
谢谢!

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

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

我相信,我能做到的,你也一定能做到,而且会比我做得更好 !

sdgm 发表于 2020-11-1 07:09:27

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

好的,多谢指点!
页: [1]
查看完整版本: c语言快排函数