旋转算法再探关于 gcc 单向旋转算法的惊人发现[跳转到主要内容](javascript:void(0))[微软 ](https://www.microsoft.com)开发博客[ 开发博客 ](https://devblogs.microsoft.com)开发博客[ 主页 ](https://devblogs.microsoft.com)[人工智能](https://devblogs.microsoft.com/ai).NET[所有 .NET 文章](https://devblogs.microsoft.com/dotnet/)框架[Aspire](https://devblogs.microsoft.com/aspire/)[.NET MAUI](https://devblogs.microsoft.com/dotnet/category/maui/)[ASP.NET Core](https://devblogs.microsoft.com/dotnet/category/dotnet-aspire/)[Blazor](https://devblogs.microsoft.com/dotnet/category/blazor/)[Entity Framework](https://devblogs.microsoft.com/dotnet/category/entity-framework/)语言[C](https://devblogs.microsoft.com/cppblog/)[C#](https://devblogs.microsoft.com/dotnet/category/csharp/)[F#](https://devblogs.microsoft.com/dotnet/category/fsharp/)[TypeScript](https://devblogs.microsoft.com/typescript/)工具[NuGet](https://devblogs.microsoft.com/dotnet/category/nuget/)[维护](https://devblogs.microsoft.com/dotnet/category/maintenance-and-updates/)[.NET 博客中文版](https://devblogs.microsoft.com/dotnet-ch/)开发者[面向开发者的微软](https://developer.microsoft.com/blog)[代理框架](https://devblogs.microsoft.com/agent-framework/)[云端开发](https://devblogs.microsoft.com/develop-from-the-cloud/)[Xcode](https://devblogs.microsoft.com/xcode/)[ISE 开发者](https://devblogs.microsoft.com/ise/)[TypeScript](https://devblogs.microsoft.com/typescript/)[PowerShell](https://devblogs.microsoft.com/powershell/)[Python](https://devblogs.microsoft.com/python/)[Java](https://devblogs.microsoft.com/java/)[Java 博客中文版](https://devblogs.microsoft.com/java-ch/)[Go](https://devblogs.microsoft.com/go/)[Microsoft Edge 开发](https://blogs.windows.com/msedgedev/)[Microsoft 365 开发者](https://devblogs.microsoft.com/microsoft365dev/)[Microsoft Entra 身份开发者](https://devblogs.microsoft.com/identity/)[Microsoft Entra PowerShell](https://devblogs.microsoft.com/entrapowershell/)平台与工具[Visual Studio](https://devblogs.microsoft.com/visualstudio/)[Visual Studio Code](https://devblogs.microsoft.com/vscode-blog)Azure[Azure 相关资讯](https://devblogs.microsoft.com/all-things-azure/)[Azure SDK](https://devblogs.microsoft.com/azure-sdk/)[Azure VM 运行时团队](https://devblogs.microsoft.com/azure-vm-runtime/)[Microsoft Azure](https://azure.microsoft.com/blog/)[Azure Cosmos DB](https://devblogs.microsoft.com/cosmosdb/)[Azure DocumentDB](https://devblogs.microsoft.com/documentdb/)[Azure Data Studio](https://cloudblogs.microsoft.com/sqlserver/?productazure-data-studio)[Azure SQL](https://devblogs.microsoft.com/azure-sql/)[DevOps](https://devblogs.microsoft.com/devops/)[DirectX](https://devblogs.microsoft.com/directx/)[Microsoft Foundry](https://devblogs.microsoft.com/foundry/)[Power Platform](https://devblogs.microsoft.com/powerplatform/)数据[OData](https://devblogs.microsoft.com/odata/)[统一数据模型 (IDEAs)](https://devblogs.microsoft.com/udm/)Windows[Windows 命令行](https://devblogs.microsoft.com/commandline/)[#ifdef Windows](https://devblogs.microsoft.com/ifdef-windows/)[深入了解 MSIX](https://devblogs.microsoft.com/insidemsix/)[MIDI 与音乐](https://devblogs.microsoft.com/windows-music-dev/)[React Native](https://devblogs.microsoft.com/react-native/)[旧闻新解](https://devblogs.microsoft.com/oldnewthing/)[Windows 开发者](https://blogs.windows.com/windowsdeveloper/)更多搜索* 无搜索结果取消[开发博客](https://devblogs.microsoft.com/)[旧闻新解](https://devblogs.microsoft.com/oldnewthing/)旋转算法再探关于 gcc 单向旋转算法的惊人发现2026 年 6 月 3 日3 条互动上次我们探讨了 [gcc libstdc 为随机访问迭代器使用的旋转算法](https://devblogs.microsoft.com/oldnewthing/20260602-00/?p112376 旋转算法再探另一种单向算法)并提到会有一个惊人的发现。和所有惊人的发现一样这个发现可能既让人震惊又让人失望。那就是gcc libstdc 算法和 [前向迭代器算法](https://devblogs.microsoft.com/oldnewthing/20260105-00/?p111962 如何仅使用前向迭代器交换两个不相邻的内存块) 本质上是一样的下面我们用一个包含两个块 A1、A2、A3 和 B1、B2、B3、B4、B5 的问题来运行这两个算法。把旧的前向迭代器算法放在上面新的 gcc libstdc 算法放在下面。firstmidlast↓↓↓A1A2A3B1B2B3B4B5↑↑↑firstmidlast我们交换 first 和 mid 位置的元素然后将两个指针都向后移动。在 first 到达原始 A 块的末尾之前这两个算法的操作是一致的。firstmidlast↓↓↓B1B2B3A1A2A3B4B5↑↑↑firstmidlast旧算法通过递归的方式交换 A1、A2、A3 和 B4、B5即交换 A1 和 B4A2 和 B5。新算法同样是继续交换 first 和 mid 位置的元素也实现了 A1 和 B4、A2 和 B5 的交换。firstmidlast↓↓B1B2B3B4B5A3A1A2↑↑firstlastmid旧算法现在递归地交换 A3 块和 A1 A2 块新算法也是如此。由此可见这两个算法本质上相同只是视角不同。这又是一个 [发现两件事物本质相同只是标签不同的极客式惊喜](https://devblogs.microsoft.com/oldnewthing/20140414-01/?p1253 发现两件事物本质相同只是标签不同的极客式惊喜) 的例子。不过这两个算法并非完全一样。新算法是对称的如果较大的块在右侧它会从右向左进行交换而旧算法总是从左向右操作。但它们的相似性十分显著。下次我们将探讨 clang 如何通过循环分解来实现旋转。[ 3](https://devblogs.microsoft.com/oldnewthing/wp-login.php?redirect_tohttps%3A%2F%2Fdevblogs.microsoft.com%2Foldnewthing%2F20260603-00%2F%3Fp%3D112378 登录以互动)* * * * * *11[在 Facebook 上分享 ](https://www.facebook.com/sharer/sharer.php?uhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378 在 Facebook 上分享)[ 在 X 上分享 ](https://twitter.com/intent/tweet?urlhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378text旋转算法再探关于 gcc 单向旋转算法的惊人发现 在 X 上分享)[在 LinkedIn 上分享 ](https://www.linkedin.com/shareArticle?minitrueurlhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378 在 LinkedIn 上分享)分类[旧闻新解](https://devblogs.microsoft.com/oldnewthing/category/oldnewthing)主题[代码](https://devblogs.microsoft.com/oldnewthing/tag/code)分享[ ](https://www.facebook.com/sharer/sharer.php?uhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378)[ ](https://twitter.com/intent/tweet?urlhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378text旋转算法再探关于 gcc 单向旋转算法的惊人发现)[](https://www.linkedin.com/shareArticle?minitrueurlhttps://devblogs.microsoft.com/oldnewthing/20260603-00/?p112378)作者[雷蒙德·陈](https://devblogs.microsoft.com/oldnewthing/author/oldnewthing)雷蒙德参与 Windows 的开发已有 30 多年。2003 年他创建了一个名为“旧闻新解”的网站其受欢迎程度远超他的想象这一发展仍让他感到有些不安。该网站催生了一本书巧合的是书名也叫《旧闻新解》艾迪生·韦斯利2007 年。他偶尔会在 Windows 开发文档的 Twitter 账号上分享一些没有实际用途的故事。1 条评论参与讨论。[发表评论](javascript:void(0) 发表评论)[取消回复](/oldnewthing/20260603-00/?p112378#respond)[登录](https://devblogs.microsoft.com/oldnewthing/wp-login.php?redirect_tohttps%3A%2F%2Fdevblogs.microsoft.com%2Foldnewthing%2F20260603-00%2F%3Fp%3D112378%23comments)[行为准则](https://aka.ms/msftqacodeconduct)排序方式最新[最新](javascript:void(0)) [热门](javascript:void(0)) [最旧](javascript:void(0))达里奥·克雷尚 4 分钟前 0折叠达里奥·克雷尚的评论 复制达里奥·克雷尚评论的链接“旧算法通过递归的方式交换 A1、A2、A3 和 B4、B4。”这句话中的第二个 “B4” 可能是个拼写错误[登录投票或回复](https://devblogs.microsoft.com/oldnewthing/wp-login.php?redirect_tohttps%3A%2F%2Fdevblogs.microsoft.com%2Foldnewthing%2F20260603-00%2F%3Fp%3D112378%23comments)阅读下一篇2026 年 6 月 4 日[旋转算法再探clang 的 libcxx 中的循环分解](https://devblogs.microsoft.com/oldnewthing/20260604-00/?p112384)雷蒙德·陈保持关注当有新文章发布时接收通知。邮箱 *国家/地区 * 选择...美国、阿富汗、奥兰群岛、阿尔巴尼亚、阿尔及利亚、美属萨摩亚、安道尔、安哥拉、安圭拉、南极洲、安提瓜和巴布达、阿根廷、亚美尼亚、阿鲁巴、澳大利亚、奥地利、阿塞拜疆、巴哈马、巴林、孟加拉国、巴巴多斯、白俄罗斯、比利时、伯利兹、贝宁、百慕大、不丹、玻利维亚、博内尔、波斯尼亚和黑塞哥维那、博茨瓦纳、布维岛、巴西、英属印度洋领地、英属维尔京群岛、文莱、保加利亚、布基纳法索、布隆迪、佛得角、柬埔寨、喀麦隆、加拿大、开曼群岛、中非共和国、乍得、智利、中国、圣诞岛、科科斯基林群岛、哥伦比亚、科摩罗、刚果、刚果金、库克群岛、哥斯达黎加、科特迪瓦、克罗地亚、库拉索、塞浦路斯、捷克、丹麦、吉布提、多米尼克、多米尼加共和国、厄瓜多尔、埃及、萨尔瓦多、赤道几内亚、厄立特里亚、爱沙尼亚、斯威士兰、埃塞俄比亚、福克兰群岛、法罗群岛、斐济、芬兰、法国、法属圭亚那、法属波利尼西亚、法属南部领地、加蓬、冈比亚、格鲁吉亚、德国、加纳、直布罗陀、希腊、格陵兰、格林纳达、瓜德罗普、关岛、危地马拉、根西岛、几内亚、几内亚比绍、圭亚那、海地、赫德岛和麦克唐纳群岛、洪都拉斯、中国香港特别行政区、匈牙利、冰岛、印度、印度尼西亚、伊拉克、爱尔兰、马恩岛、以色列、意大利、牙买加、扬马延岛、日本、泽西岛、约旦、哈萨克斯坦、肯尼亚、基里巴斯、韩国、科索沃、科威特、吉尔吉斯斯坦、老挝、拉脱维亚、黎巴嫩、莱索托、利比里亚、利比亚、列支敦士登、立陶宛、卢森堡、中国澳门特别行政区、马达加斯加、马拉维、马来西亚、马尔代夫、马里、马耳他、马绍尔群岛、马提尼克、毛里塔尼亚、毛里求斯、马约特、墨西哥、密克罗尼西亚、摩尔多瓦、摩纳哥、蒙古、黑山、蒙特塞拉特、摩洛哥、莫桑比克、缅甸、纳米比亚、瑙鲁、尼泊尔、荷兰、新喀里多尼亚、新西兰、尼加拉瓜、尼日尔、尼日利亚、纽埃、诺福克岛、北马其顿、北马里亚纳群岛、挪威、阿曼、巴基斯坦、帕劳、巴勒斯坦、巴拿马、巴布亚新几内亚、巴拉圭、秘鲁、菲律宾、皮特凯恩群岛、波兰、葡萄牙、波多黎各、卡塔尔、留尼汪、罗马尼亚、卢旺达、萨巴、圣巴泰勒米、圣基茨和尼维斯、圣卢西亚、圣马丁、圣皮埃尔和密克隆、圣文森特和格林纳丁斯、萨摩亚、圣马力诺、圣多美和普林西比、沙特阿拉伯、塞内加尔、塞尔维亚、塞舌尔、塞拉利昂、新加坡、圣尤斯特歇斯、圣马丁、斯洛伐克、斯洛文尼亚、所罗门群岛、索马里、南非、南乔治亚岛和南桑威奇群岛、南苏丹、西班牙、斯里兰卡、圣赫勒拿、阿森松、特里斯坦达库尼亚、苏里南、斯瓦尔巴群岛、瑞典、瑞士、中国台湾地区、塔吉克斯坦、坦桑尼亚、泰国、东帝汶、多哥、托克劳、汤加、特立尼达和多巴哥、突尼斯、土耳其、土库曼斯坦、特克斯和凯科斯群岛、图瓦卢、美国海外领地、美属维尔京群岛、乌干达、乌克兰、阿拉伯联合酋长国、英国、乌拉圭、乌兹别克斯坦、瓦努阿图、梵蒂冈城、委内瑞拉、越南、瓦利斯和富图纳、也门、赞比亚、津巴布韦我希望接收“旧闻新解”时事通讯。[隐私声明。](https://go.microsoft.com/fwlink/?LinkId521839)订阅关注此博客[](https://twitter.com/ChenCravat twitter)[](https://www.youtube.com/playlist?listPLlrxD0HtieHge3_8Dm48C0Ns61I6bHThc youtube)[](https://github.com/oldnewthing GitHub)[](https://devblogs.microsoft.com/oldnewthing/feed/ RSS 订阅)你确定要删除此评论吗确定 取消[登录](https://devblogs.microsoft.com/oldnewthing/wp-login.php?redirect_tohttps%3A%2F%2Fdevblogs.microsoft.com%2Foldnewthing%2F20260603-00%2F%3Fp%3D112378)主题插入/编辑链接关闭输入目标 URLURL链接文本在新标签页中打开链接或者链接到现有内容搜索_未指定搜索词。显示最近的项目。_ _搜索或使用上下箭头键选择项目。_取消代码块×粘贴你的代码片段确定 取消有什么新动态[Surface Pro](https://www.microsoft.com/surface/devices/surface-pro)[Surface Laptop](https://www.microsoft.com/surface/devices/surface-laptop)[Surface Laptop Studio 2](https://www.microsoft.com/en-us/d/Surface-Laptop-Studio-2/8rqr54krf1dz)[面向企业的 Copilot](https://www.microsoft.com/en-us/microsoft-copilot/organizations?icidDSM_Footer_CopilotOrganizations)[个人版 Copilot](https://www.microsoft.com/en-us/microsoft-copilot/for-individuals?formMY02PTOCIDGE_web_Copilot_Free_868g3t5nj)[Windows 中的人工智能](https://www.microsoft.com/en-us/windows/ai-features?icidDSM_Footer_WhatsNew_AIinWindows)[探索微软产品](https://www.microsoft.com/en-us/microsoft-products-and-apps)[Windows 11 应用](https://www.microsoft.com/en-us/windows/apps-for-windows?icidDSM_Footer_WhatsNew_Windows11apps)微软商店[账户信息](https://account.microsoft.com/)[下载中心](https://www.microsoft.com/en-us/download)[微软商店支持](https://go.microsoft.com/fwlink/?linkid2139749)[退货](https://www.microsoft.com/en-us/store/b/returns)[订单跟踪](https://www.microsoft.com/en-us/store/b/order-tracking)[认证翻新产品](https://www.microsoft.com/en-us/store/b/certified-refurbished-products)[微软商店承诺](https://www.microsoft.com/en-us/store/b/why-microsoft-store?icidfooter_why-msft-store_7102020)[灵活支付方式](https://www.microsoft.com/en-us/store/b/payment-financing-options?icidfooter_financing_vcc)教育[微软教育](https://www.microsoft.com/en-us/education)[教育设备](https://www.microsoft.com/en-us/education/devices/overview)[Microsoft Teams 教育版](https://www.microsoft.com/en-us/education/products/teams)[Microsoft 365 教育版](https://www.microsoft.com/en-us/education/products/microsoft-365)[学校购买指南](https://www.microsoft.com/education/how-to-buy)[教育工作者培训与发展](https://education.microsoft.com/)[学生和家长优惠](https://www.microsoft.com/en-us/store/b/education)[教育领域的人工智能](https://www.microsoft.com/en-us/education/ai-in-education)商业[微软人工智能](https://www.microsoft.com/en-us/ai?icidDSM_Footer_AI)[微软安全](https://www.microsoft.com/en-us/security)[Dynamics 365](https://www.microsoft.com/en-us/dynamics-365)[Microsoft 365](https://www.microsoft.com/en-us/microsoft-365/business)[Microsoft Power Platform](https://www.microsoft.com/en-us/power-platform)[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-teams/group-chat-software)[Microsoft 365 Copilot](https://www.microsoft.com/en-us/microsoft-365-copilot?icidDSM_Footer_Microsoft365Copilot)[小企业解决方案](https://www.microsoft.com/en-us/store/b/business?icidCNavBusinessStore)开发者与 IT[Azure](https://azure.microsoft.com/en-us/)[微软开发者](https://developer.microsoft.com/en-us/)[微软学习](https://learn.microsoft.com/)[人工智能市场应用支持](https://www.microsoft.com/software-development-companies/offers-benefits/isv-success?icidDSM_Footer_SupportAIMarketplaceocidcmm3atxvn98)[微软技术社区](https://techcommunity.microsoft.com/)[微软市场](https://marketplace.microsoft.com?icidDSM_Footer_Marketplaceocidcmm3atxvn98)[软件公司](https://www.microsoft.com/software-development-companies?icidDSM_All_SoftwareCompanies/ocidcmm3atxvn98)[Visual Studio](https://visualstudio.microsoft.com/)公司[职业机会](https://careers.microsoft.com/)[关于微软](https://www.microsoft.com/about)[公司新闻](https://news.microsoft.com/source/?icidDSM_Footer_Company_CompanyNews)[微软隐私政策](https://www.microsoft.com/en-us/privacy?icidDSM_Footer_Company_Privacy)[投资者关系](https://www.microsoft.com/investor/default.aspx)[多元化与包容性](https://www.microsoft.com/en-us/diversity/default?icidDSM_Footer_Company_Diversity)[无障碍访问](https://www.microsoft.com/en-us/accessibility)[可持续发展](https://www.microsoft.com/en-us/corporate-responsibility/sustainability?icidDSM_Footer_Sustainability)[ 你的隐私选择退出图标 你的隐私选择 ](https://aka.ms/yourcaliforniaprivacychoices) [ 你的隐私选择退出图标 你的隐私选择 ](https://aka.ms/yourcaliforniaprivacychoices) [ 消费者健康隐私 ](https://go.microsoft.com/fwlink/?linkid2259814)[网站地图](https://www.microsoft.com/en-us/sitemap1.aspx)[联系微软](https://support.microsoft.com/contactus)[隐私 ](https://go.microsoft.com/fwlink/?LinkId521839)管理 Cookie[使用条款](https://go.microsoft.com/fwlink/?LinkID206977)[商标](https://go.microsoft.com/fwlink/?linkid2196228)[安全与环保](https://go.microsoft.com/fwlink/?linkid2196227)[回收利用](https://www.microsoft.com/en-us/legal/compliance/recycling)[关于我们的广告](https://choice.microsoft.com)(C) 微软 2026