自学CLRS:请求验证我的C# Selection Sort实现是否正确
确认你的C#实现是不是选择排序?看这几点就够了
嘿,自学CLRS的过程中能动手实现算法真的很棒!要确认你的代码是不是选择排序,咱们先把选择排序的核心逻辑理清楚,再对照你的代码逐一核对就行:
首先,选择排序的核心思路特别直白:
- 把数组分成已排序的左半部分和未排序的右半部分,初始时已排序部分为空。
- 每一轮都在未排序部分里找到最小(或者你实现的是找最大,逻辑同理)的元素,然后把它和未排序部分的第一个元素交换位置——这样已排序部分就多了一个元素,未排序部分少一个。
- 整个过程最多只会有n-1次交换(n是数组长度),这是它和冒泡排序最明显的区别(冒泡每轮可能换好多次)。
现在你可以对着自己的C#代码检查这几个关键点:
- 外层循环是不是从数组的起始位置开始,一直遍历到倒数第二个元素?(因为最后一个元素不用再比较,自然就在正确位置了)
- 内层循环是不是从当前外层循环的下一个位置开始,遍历到数组末尾,专门用来找未排序部分里最小元素的索引?
- 每轮内层循环结束后,是不是只做了一次交换操作——把找到的最小元素和未排序部分的第一个元素互换?
如果这几点都符合,那你的实现肯定就是选择排序没错啦!要是你愿意把代码贴出来,我可以帮你再细致地过一遍细节~
内容的提问来源于stack exchange,提问作者Suyash Gupta
相关产品推荐
相关产品推荐

