当前位置: 首页 > 知识库问答 >
问题:

了解荷兰国旗计划

上官培
2023-03-14

我正在阅读荷兰国旗问题,但无法理解C实现中的三Way分区函数中的低和高参数是什么。

如果我假设它们是要排序的数组的最小和最大元素,那么if其他if语句没有任何意义,因为(data[i]

我哪里错了?


共有3个答案

房唯
2023-03-14

低和高视为中间分区中值的半开放范围 [低、高)。 所有小于值的值都以左侧分区结束。中间分区将包含从(但不包括)的值。最后,所有大于或等于 high 的值都位于正确的分区中。

蔺敏达
2023-03-14

} else if (data[i]

谭新知
2023-03-14

lowhigh是您为进行三向分区而定义的值,即,要进行三向划分,您只需要两个值:

[bottom] <= low  < [middle] < high <= [top]

在C程序中,您要移动的是分区发生的位置。一个分步示例:

data = [ 3, 1, 4, 9, 8, 2, 6, 9, 0 ]
low  = 4
high = 8
   [ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
p^  i^                                  q^
   [ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
    p^  i^                              q^
   [ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
        p^  i^                          q^
   [ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
        p^      i^                      q^
   [ 3 , 1 , 4 , 0 , 8 , 2 , 6 , 9 , 9 ]
        p^      i^                  q^
   [ 3 , 1 , 0 , 4 , 8 , 2 , 6 , 9 , 9 ]
            p^      i^              q^
   [ 3 , 1 , 0 , 4 , 9 , 2 , 6 , 8 , 9 ]
            p^      i^          q^
   [ 3 , 1 , 0 , 4 , 6 , 2 , 9 , 8 , 9 ]
            p^      i^      q^
   [ 3 , 1 , 0 , 4 , 6 , 2 , 9 , 8 , 9 ]
            p^          i^  q^
   [ 3 , 1 , 0 , 2 , 6 , 4 , 9 , 8 , 9 ]
                p^         iq^

正如算法所说:

  • 交换底部上方的元素(即p1),因为底部下方的所有元素都已被检查,或者
  • 交换顶部以下的元素(即q-1),因为顶部以上的所有元素都已被检查,或者
  • 保留元素,因为它属于中间

您将[3,1,0,2][6,4][9,8,9]分别作为底部、中间和顶部分区。

 类似资料:
  • 题目描述 拿破仑席卷欧洲大陆之后,代表自由,平等,博爱的竖色三色旗也风靡一时。荷兰国旗就是一面三色旗(只不过是横向的),自上而下为红白蓝三色。 该问题本身是关于三色球排序和分类的,由荷兰科学家Dijkstra提出。由于问题中的三色小球有序排列后正好分为三类,Dijkstra就想象成他母国的国旗,于是问题也就被命名为荷兰旗问题(Dutch National Flag Problem)。 下面是问题的

  • 国旗是一个国家的象征与标志,悬挂着的国旗就代表了国家的主权。让我们来看看世界各国的国旗长成什么样子,可以通过语音播放让儿童自己学习。了解国旗的真正意义,从什么时候使用?如何设计的?为什么这么设计? 功能 查看国旗长成什么样子。 了解国旗的内涵。 语音播放国家。 按大洲定位国旗。  

  • 本文向大家介绍实现中国五星红旗国旗的布局相关面试题,主要包含被问及实现中国五星红旗国旗的布局时的应答技巧和注意事项,需要的朋友参考一下 注1: 因为 浏览器 CORS,所以需配置 nginx 代理才能正常显示 注2: 参考 国旗墨线图 绘制 注3: 可在我的 git仓库 查看 效果 html less

  • 本文向大家介绍C#绘制中国国旗的方法,包括了C#绘制中国国旗的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#绘制中国国旗的方法。分享给大家供大家参考。具体如下: 程序运行截图: 中国国旗被定义在《GB:12982-2004》中,以下是从维基百科条目中华人民共和国国旗中截的一张图,标出了五颗星大致的位置。 建立一个空的C# Windows窗体应用程序,窗体取名FormMain,在窗

  • 旗帜在风中飘动,因此可能会遮挡自己或以其他方式非线性变形(这使得像筛选这样的技术更难使用),以及 与可口可乐罐不同,美国国旗的星条旗并不是美国国旗独有的,也可能是利比里亚国旗的一部分,排除了许多“线条签名”技术。 是否有任何标准的图像处理或识别技术将特别适合于这项任务?

  • 本文向大家介绍python 绘制国旗的示例,包括了python 绘制国旗的示例的使用技巧和注意事项,需要的朋友参考一下 国旗是一个国家的象征,它可以反映一个国家的特色和传统,国旗起源于近代的欧洲,是一个国家主权意识不断增强后的必然产物,本文我们使用 Python 来画几面国旗,使用的 Python 库是大家比较熟悉的 turtle。 五星红旗 五星红旗是中华人民共和国的国旗,它是由四颗小的黄五角星