C++快速排序算法

2023-12-10

我不想复制 qsort 算法。我正在练习编写 qsort,这就是我想到的,我对我的代码的哪一部分是错误的感兴趣。请不要告诉我这是家庭作业,因为我可以使用下面链接中的代码。

参考:http://xoax.net/comp/sci/algorithms/Lesson4.php

当它运行时,我在控制台中得到这个:

Program loaded.
run
[Switching to process 10738]
Running…
Current language:  auto; currently c++
Program received signal:  “EXC_ARITHMETIC”.


void myQSort(int min, int max, int* myArray)
    {
        // Initially find a random pivot
        int pivotIndex = rand() % max;
            int pivot = myArray[pivotIndex];

        int i = 0 , j = max-1;

        // Pointer to begining of array and one to the end

        int* begin = myArray;
        int* end = &myArray[max-1];

        // While begin < end 
        while( begin < end )
        {
        // Find the lowest bound number to swap
            while( *begin < pivot )
            {
                begin++;
            }
            while( *end > pivot ) 
            {
                // Find the highest bound number to swap
                end--;
            }

        // Do the swap
            swap(begin,end);
        }
        // Partition left
        myQSort(0, pivotIndex-1, myArray);
        // Partiion right
        myQSort(pivotIndex+1,max, myArray);

    }

编辑 - 互换代码:

void swap(int* num, int* num2)
{
    int temp = *num;
    *num = *num2;
    *num2 = temp;
}

// sort interval [begin, end)
void myQSort(int* begin, int* end)
{
    if(end - begin < 2)
        return;
    int* l = begin;
    int* r = end - 1;

    // Initially find a random pivot
    int* pivot = l + rand() % (r - l + 1);
    while(l != r)
    {
        // Find the lowest bound number to swap
        while(*l < *pivot) ++l;
        while(*r >= *pivot && l < r) --r;

        // Do the swap
        if(pivot == l) { pivot = r; }
        std::swap(*l, *r);
    }

    // Here l == r and numbers in the interval [begin, r) are lower and in the interval [l, end) are greater or equal than the pivot
    // Move pivot to the position
    std::swap(*pivot, *l);

    // Sort left
    myQSort(begin, l);
    // Sort right
    myQSort(l + 1, end);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++快速排序算法 的相关文章

  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我

随机推荐

  • 为什么在 foreach 中对 Linq 分组选择所做的更改会被忽略,除非我添加 ToList()?

    我有以下方法 public IEnumerable
  • 获取具有最高值且有联系的顶行

    我在 PostgreSQL 中有一个名为product其中包含2个字段 id and quantity 我想找到id最高的产品quantity 据我所知 有两种方法 SELECT id FROM product WHERE quantity
  • Eclipse 没有显示已弃用警告?

    根据 Javadocs public Date int year int month int day This constructor was deprecated in API level 1 Date date new Date yea
  • 标记大小/alpha 缩放与窗口大小/缩放绘图/散点

    当探索 xy 图表上具有许多点的数据集时 我可以调整 Alpha 和 或标记大小 以快速直观地了解点最密集的聚集位置 然而 当我放大或放大窗口时 需要不同的 Alpha 和 或标记大小才能给出相同的视觉印象 当我增大窗口或放大数据时 如何增
  • 将商店经理用户名添加到 Woocommerce 管理订单备注

    我现在有一个问题 我有一个插件 可以让我快速更改管理订单列表中的订单状态 不幸的是 商店经理的名字没有被传送 我想我已经找到了正确的代码 但我不知道具体该怎么做 将不胜感激任何帮助 public function save comment
  • 使用 GPUImage 对视频进行色度过滤?

    我正在尝试使用透明键在我的应用程序中显示具有透明度的视频文件 RGB 0x00FF00 或全绿色 使用 BradLarson 的很棒GPUImage工具包 然而 我在使用过程中遇到了一些困难GPUImageChromaKeyFilter过滤
  • 如何在 Windows 7 64 位上使用 theano 设置 cuDnn

    我已经安装了Theano框架并在我的机器上启用了 CUDA 但是当我在 python 控制台中 导入 theano 时 我收到以下消息 gt gt gt import theano Using gpu device 0 GeForce GT
  • 通过日历提供程序添加的事件未显示在 Android 日历应用程序上

    我正在尝试将事件添加到默认的 Android 日历 而不要求用户确认保存事件 所以不是故意的 以下代码没有编译错误或运行时错误 单击该按钮后 不会显示任何错误 也不会向 Android 日历应用程序添加任何事件 我已经在清单中检查了日历授权
  • GAE python 中的 YAML 文件 url 和脚本

    我在 Google App Engine 中使用 Python 2 7 但似乎无法正确设置我的 app yaml 文件 我的目标是如果我去http localhost carlos 我得到了一个被执行的 Carlos py 这是我的目录结构
  • ASP.NET INamingContainer - 可选前缀

    ASP NET 是否始终应用 100元 元素 ID 的前缀 或者在某些情况下 如果保证元素是唯一的 它是否会优化此前缀 最近 我发现所应用的 ID 前缀有所不同 一种具有前缀 另一种则没有 但两者都源自同一源 谁能提供更多有关 INamin
  • C++ 中的免费分析? [复制]

    这个问题在这里已经有答案了 可能的重复 您最喜欢的分析工具是什么 针对 C 在 Java 中 他们有一个很好的免费分析器 它与 sdk 一起提供 称为 jvisualvm C 有类似的东西吗 我使用的是 Windows 并且有 Visual
  • Dotnetnuke 从模块调用 ajax

    我现在正在尝试使用 ajax 调用构建 dnn 模块 但有一个 jquery 错误指出 语法错误 意外的标记 我尝试使用 ajax url 并尝试在根文件夹中创建一个新的 ascx 但仍然显示错误 404 我的ajax调用如下 ajax u
  • 是否可以将 LPWSTR 从 C++ DLL 返回到 C# 应用程序

    C 函数定义是这样的 declspec dllexport LPWSTR stdcall GetErrorString int errCode 我在 C 中这样称呼它 DllImport DLLTest dll public static
  • 在 ArangoDB 中使用相同边定义的多个图

    我正在评估 ArangoDB 并尝试创建多个可能包含相同节点集合和相同边集合的图 即使每个图可能包含不同的物理文档和边 然而 当尝试创建一个使用已在另一个图中使用的边集合的图时 我得到 1921 边缘集合已在边缘定义中使用 error 当图
  • 当依赖包所有者从 github 中删除存储库时,Golang 项目会发生什么?

    我是 Golang 的新手 我来自 NodeJS 我有点关心依赖管理的工作原理 在 Node 中 您可以放心 NPM 依赖项永远不会停止可用 因为它托管在 NPM com 上 并且不允许所有者删除它们 然而 在 Github 中 所有者几乎
  • 如何正确关闭 Bot::BasicBot 机器人(基于 POE::Component::IRC)?

    这是一个示例脚本 当我按下 Ctrl C 时 机器人退出 IRC 但在一段时间后又重新连接 如何正确关闭机器人 usr bin perl package main my bot Perlbot gt new server gt irc da
  • 每行放置两个 div

    所以我有 X 个 div 我想将 2 个 div 放在一排 彼此相邻 如果屏幕尺寸宽度低于 n px 则每行应有 1 个 div 目前我有这个 container display flex box width 50px background
  • PHP如何解析对象sdtClass [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 当我运行 SOAP 客户端时 我收到以下响应 我怎样才
  • 如何在单个文件中恢复旧提交的更改

    如何恢复 删除在旧的多文件提交中所做的更改 但仅在单个文件中进行 IE 就像是 git revert
  • C++快速排序算法

    我不想复制 qsort 算法 我正在练习编写 qsort 这就是我想到的 我对我的代码的哪一部分是错误的感兴趣 请不要告诉我这是家庭作业 因为我可以使用下面链接中的代码 参考 http xoax net comp sci algorithm