OMG怎么跑不动 2023-12-06 00:05 采纳率: 25%
浏览 1

用选择法排序为什么会出现有数据重复了替代别的数据的情况呢

img


输入ab数组,拷贝到c数组中再用选择法排序从小到大,为啥会重复

img

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-06 02:13
    关注

    【以下回答由 GPT 生成】

    当将数据从数组a和数组b拷贝到数组c中,并对c数组使用选择法排序时,出现重复的数据替代了其他数据的情况时,很可能是因为在选择法排序算法的实现中,没有正确处理重复元素的情况。

    选择法排序算法的基本思想是每一轮选择出当前未排序部分的最小值,然后将其和当前位置交换。但如果没有正确处理重复元素,就可能会出现重复元素被选择和交换的情况。

    为了解决这个问题,可以在选择法排序算法中增加一个判断条件,只有当找到比当前位置大的最小元素时才进行交换。这样可以避免重复元素的被替代。

    以下是一个示例代码示例,用于解决这个问题:

    def selection_sort_with_duplicates(arr):
        n = len(arr)
    
        for i in range(n):
            min_idx = i
            for j in range(i+1, n):
                if arr[j] < arr[min_idx] or (arr[j] == arr[min_idx] and j < min_idx):
                    min_idx = j
            arr[i], arr[min_idx] = arr[min_idx], arr[i]
    
        return arr
    

    在这个示例代码中,当找到相同的最小元素时,会判断其下标谁更小,只有当下标更小的元素才会进行交换,这样可以保证元素的相对顺序不变。

    另外,如果你可以提供你的具体代码,我也可以帮助你定位问题所在,并给出相应的修复方案。



    【相关推荐】


    • 这篇博客: 2019NHOI小甲解题思路中的 解题思路:这题的考点是标技数组,题目要求出的是A集合的数字中,减去B集合中存在的A集合的数字;即求AB两个集合的差集,数据范围不大,直接使用两个标记数组进行比较即可。附代码如下: 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月6日

悬赏问题

  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop
  • ¥15 共享文件夹会话中为什么会有WORKGROUP
  • ¥15 关于#python#的问题:使用ATL02数据解算光子脚点的坐标(操作系统-windows)