C++ 中的迭代合并排序

2024-04-21

我目前正在研究合并排序的迭代版本,但遇到了问题。当数组的特定大小如 34、35、36 或 100(仅几个示例)时,程序会崩溃,而它适用于其余数组(fe 适用于 2 的幂)。我已经运行了一些测试并对其进行了调试,问题似乎出在我的迭代/合并排序的左、右半部分的范围,但我找不到它。我将感谢你的帮助。 代码:

int * loadArray(int size){ //i input size of array and it assigns random numbers
    int *array = new int[size];

     srand( time( NULL ) );

    for( int i = 0; i < size; i++ )
        array[i]=rand()%100;

    return array;
}




void merge(int arr[], int left, int middle, int right)
{
    int i, j, k;              //iterators
    int n1 = middle-left + 1; //indexes
    int n2 = right-middle;    //indexes
    int Left[n1], Right[n2];  //arrays holding halves

for (i = 0; i < n1; i++)
    Left[i] = arr[left + i];//assigning values to left half
for (j = 0; j < n2; j++)
    Right[j] = arr[middle + 1+ j];//assigning values to right half

i = 0;
j = 0;
k = left;
while (i < n1 && j < n2)    //comparing and merging
{
    if (Left[i] <= Right[j])
    {
        arr[k] = Left[i];
        i++;
    }
    else
    {
        arr[k] = Right[j];
        j++;
    }
    k++;
}

while (i < n1)  //leftovers
{
    arr[k] = Left[i];
    i++;
    k++;
}

while (j < n2)  //leftovers
{
    arr[k] = Right[j];
    j++;
    k++;
}
}




void mergeSortIter(int array[], int size) //the function which is being called and handles division of the array
{
    double startTime = clock(); //start measuring time

    int i;
    int left_start;

   for (i=1; i<=size-1; i = 2*i)
   {
       for (left_start=0; left_start<size-1; left_start += 2*i)
       {
            int mid = left_start + i - 1;
            int right_end = min(left_start + 2*i - 1, size-1);
            merge(array, left_start, mid, right_end);
       }
       //showArray(array,size);
   }
    cout << double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl; //output the time measured
}

None

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

C++ 中的迭代合并排序 的相关文章

  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • 以下 PLINQ 代码没有改进

    我没有看到使用以下代码的处理速度有任何改进 IEnumerable
  • 如何对 Data::Dumper 的输出进行排序?

    我想转储对象和散列的值 但它总是乱序打印键 如何按 递归 排序顺序转储键 use Data Dumper print Dumper obj Set Data Dumper Sortkeys 1获取 Perl 的默认排序顺序 如果要自定义顺序
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • “没有合适的默认构造函数可用”——为什么会调用默认构造函数?

    我已经查看了与此相关的其他一些问题 但我不明白为什么在我的情况下甚至应该调用默认构造函数 我可以只提供一个默认构造函数 但我想了解它为什么这样做以及它会产生什么影响 error C2512 CubeGeometry no appropria
  • 如何设置消息队列的所有者?

    System Messaging MessageQueue 类不提供设置队列所有权的方法 如何以编程方式设置 MSMQ 消息队列的所有者 简短的答案是 p invoke 对 windows api 函数的调用MQSetQueueSecuri
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 在 mvc4 中创建通用 mvc 视图

    我以前也提过类似的问题 没有得到答案 如何创建一个通用的 mvc4 视图 该视图可以显示传递给它的模型列表或单个模型 模型可以是个人 组织或团体 无论传递给它的是什么 如果您正在寻找类似的东西 model MyViewModel
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • 初始化列表在 VC10 中不起作用

    我在 VC 2010 中编写了这个程序 class class1 public class1 initializer list
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • 运行 xunit 测试时无法将输出打印到控制台窗口

    public class test2InAnotherProject private readonly ITestOutputHelper output public test2InAnotherProject ITestOutputHel
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到

随机推荐

  • 如何将图像文件从文档目录上传到iphone中的php服务器

    我目前正在开发画廊类的 iPhone 应用程序 根据我的要求 我需要将所有相机捕获的图像存储到文档目录中 文档文件夹中有一些 10 20 个图像文件 之后我必须使用单个 php url 将应用程序资源文档文件夹推送到服务器上 我已附加屏幕截
  • C# 中的省略号表示法?

    我在哪里可以获得有关实现我自己的带有省略号符号的方法的信息 e g static void my printf char format 这也是所谓的省略符号还是有一个更奇特的名字 看看参数关键字 https learn microsoft
  • 多边形来自折线?

    我正在尝试自动从折线创建多边形 到目前为止 我一直在正确计算折线每个部分的外推边 条件 基线和边之间的距离是常数 如何从基点 红色点 计算边 蓝色点 的角点 这是我在 Qt 中的代码 这对我来说很好用 QPolygonF projectPL
  • 使用 BeautifulSoup 抓取网页中的链接标题和 URL

    我有一个流行文章的网页 我想抓取每个引用网页的超链接及其所显示文章的标题 我的脚本所需的输出是一个 CSV 文件 其中在一行中列出了每个标题和文章内容 因此 如果该网页上有 50 篇文章 我想要一个包含 50 行和 100 个数据点的文件
  • Hibernate - 限制嵌套集合的大小

    我有以下型号 Entity Data public class Book Id GeneratedValue strategy GenerationType IDENTITY private Long id private String a
  • SwiftUI macOS 在文本字段处于活动状态时使用箭头键滚动列表

    我想使用 SwiftUITextField https developer apple com documentation swiftui textfield和一个 SwiftUIList https developer apple com
  • 使用 C# 获取 Active Directory 用户数据

    我想获取有关特定用户的数据 我知道该用户的 OU 路径 但无法使用该 OU 路径获取信息 总是说找不到用户 谁能告诉我我需要更改搜索过滤器吗 请帮忙 Code 用户路径 abc ds xyz net fGroup xcxc Users 12
  • Spring data Cassandra 对 UDT 的注释 [重复]

    这个问题在这里已经有答案了 springdatacassandra如何支持POJO中Cassandra提供的用户定义数据类型 我正在寻找 UDT 的注释 Spring data cassandra 最新版本 1 2 0 BUILD SNAP
  • 在 Google Chrome 中使用“i18n-content”进行国际化

    The 官方文档 http code google com chrome extensions i18n html建议检索字符串以进行国际化 如下所示 document querySelector appname innerHTML chr
  • 什么时候应该更喜欢 Kotlin 扩展函数?

    在 Kotlin 中 至少有一个参数的函数可以定义为常规非成员函数或定义为扩展功能 https kotlinlang org docs reference extensions html extension functions其中一个参数是
  • 如何使用reportlab添加PDF中的总页数

    def analysis report request response HttpResponse mimetype application pdf response Content Disposition attachment filen
  • 使用log4j2.xml初始化slf4j

    我想使用 slf4j 而不是 log4j 我在 pom xml 中添加了以下依赖项 我对 slf4j 使用 1 7 25 对 log4j2 使用 2 10 0
  • 在 Eclipse 首选项中看不到 PHP 内容类型?

    我有一个带有 PDT 的新 eclipse Juno 安装 我导入了我的首选项 除了在内容类型部分我没有看到 PHP 内容类型之外 一切似乎都工作正常 我看到 php 内容类型为 content typ name0 如屏幕截图所示 这有什么
  • 获取 Android 中当前的活跃用户

    我正在寻找一种方法来获取 Android 中当前的活跃用户 我正在构建一个系统应用程序 以便我可以使用隐藏方法 但具体来说它必须是当前的活动用户 而不是给定进程的用户 例如 如果您使用 ADB 安装应用程序 则进程会显示用户 ID 是所有者
  • ASP.NET 5、MVC 6、Web API -> ModelState.IsValid 始终返回 true

    我看过很多关于 IsValid 的帖子总是正确的 但没有一个能帮助我解决这个问题 我也在使用 MVC5 的 ASP NET 4 中看到了这个问题 很明显我在某个地方错过了一步 控制器方法 public IHttpActionResult P
  • 从 spring-cloud-sleuth 切换到微米追踪后,Brave Baggage 无法工作

    我正在将我的 spring 项目更新到较新的版本 更新后我收到以下消息 由于以下原因 您的项目设置与我们的要求不兼容 Spring Cloud Sleuth 与此 Spring Cloud 版本系列不兼容 操作 考虑应用以下操作 从 Spr
  • 打开弹出窗口时 Chrome 扩展程序损坏 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 Chrome 扩展程序在尝试打开时崩溃popup https developer chrome com extensio
  • 如何使用 Warp 检查授权标头?

    我正在使用 Rust 和 Warp 构建 graphql api 我已经浏览了文档 但我仍然不知道如何链接过滤器 特别是检查authorization在请求头中 let context extractor warp any this cod
  • 通过 React Router 传递函数

    我想通过 React Router 将函数传递给子组件 我尝试了以下方法 但似乎不起作用 class App extends Component constructor props super props render return div
  • C++ 中的迭代合并排序

    我目前正在研究合并排序的迭代版本 但遇到了问题 当数组的特定大小如 34 35 36 或 100 仅几个示例 时 程序会崩溃 而它适用于其余数组 fe 适用于 2 的幂 我已经运行了一些测试并对其进行了调试 问题似乎出在我的迭代 合并排序的