Fortran 定义unique函数删除数组中的重复数值

这篇具有很好参考价值的文章主要介绍了Fortran 定义unique函数删除数组中的重复数值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

此函数和matlab中的[c,ia,ic] = unique(arr)是一致的,只能满足一维数组,二维数组其实就是加个循环即可。

    subroutine unique(arr,C,ia,ic,count,n)
    implicit none
    integer :: n
    integer :: arr(n)
    integer :: C(n), ia(n), ic(n)
    integer :: i, j, k, count, temp

    count = 0
    do i = 1, n
        C(i) = 0
        ic(i) = 0
    end do

    do i = 1, n
        do j = 1, count
            if (arr(i) == C(j)) then
                ic(i) = j
                exit
            end if
        end do

        if (ic(i) == 0) then
            count = count + 1
            C(count) = arr(i)
            ic(i) = count
        end if
    end do

    ! 排序结果数组 C
    do i = 1, count-1
        do j = 1, count-i
            if (C(j) > C(j+1)) then
                temp = C(j)
                C(j) = C(j+1)
                C(j+1) = temp

                ! 更新 ic 数组
                do k = 1, n
                    if (ic(k) == j) then
                        ic(k) = j+1
                    else if (ic(k) == j+1) then
                        ic(k) = j
                    end if
                end do
            end if
        end do
    end do

    ! 初始化 ia 数组
    do i = 1, n
        ia(i) = i
    end do
    end subroutine unique

参数说明:

arr:要算的函数

C:unique后的数组,和arr一样长,需要count函数来获取,C(1:count)所有的不重复数值

ia:arr(ia)=C

ic:C(ic) = arr

count:不重复数值的个数

n:arr的大小

检验后和matlab的unique函数应该是一致的。文章来源地址https://www.toymoban.com/news/detail-574561.html

到了这里,关于Fortran 定义unique函数删除数组中的重复数值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Leetcode】26.删除有序数组中的重复项

    给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: 更改

    2024年02月12日
    浏览(51)
  • 80. 删除有序数组中的重复项 II

    题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台  解题思路:因为数组有序,相等的元素一定相邻,所以可以使用一个变量num统计相等元素的个数,如果当前元素和前一个元素相等,令num++。另外使用一个变量len记录删除后数组的新长度,如果当前正在遍历的元

    2024年02月13日
    浏览(47)
  • 算法:删除有序数组中的重复项---双指针[3]

    文章来源: https://blog.csdn.net/weixin_45630258/article/details/132701024 欢迎各位大佬指点、三连 1、题目: 对给定的有序数组 nums 删除重复元素,在删除重复元素之后,每个元素只出现一次,并返回新的长度,上述操作必须通过 原地修改 数组的方法,使用 O(1) 的空间复杂度完成。 2、

    2024年02月09日
    浏览(43)
  • 力扣0080——删除有序数组中的重复项II

    难度: 中等 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素 只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组并在使用 O(1) 额外空间的条件下完成。 说明 : 为什么返回数值是整数,但

    2024年02月21日
    浏览(39)
  • 面试经典150题——删除有序数组中的重复项

    题目来源 力扣每日一题;题序:26 我的题解 方法一 双指针 使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。 时间复杂度 :O(n) 空间复杂度 :O(1) 有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持

    2024年04月14日
    浏览(61)
  • (78)删除有序数组中的重复项(79)排序矩阵查找

    水晶帘动微风起,满架蔷薇一院香。 —高骈- 题目链接:删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个

    2024年04月17日
    浏览(38)
  • 【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组

    🧑‍💻作者: @情话0.0 📝专栏:《LeetCode》 🔖题目链接:移除元素、删除有序数组中的重复项、合并两个有序数组 给你一个数组 nums 和一个值 val,你需要 原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空

    2023年04月09日
    浏览(77)
  • LeetCode刷题集(三)(26 删除有序数组中的重复项)

    基本掌握LeetCode中的26删除有序数组中的重复项 题目描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放

    2023年04月17日
    浏览(54)
  • 【数据结构OJ题】删除有序数组中的重复项

    原题链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 用 双指针算法, 定义两个变量src和dst,一开始让src和dst指向num[ ]数组的第一个元素,再使用if语句判断。 如果nums[src]==nums[dst],就让src指向下一位,即src++。如果nums[src]!=

    2024年02月14日
    浏览(39)
  • 【每日一题】2.LeetCode——删除有序数组中的重复项

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元

    2024年02月19日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包