| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1167 人关注过本帖
标题:如何把出现的次数以小到大和以大到小进行排列?
取消只看楼主 加入收藏
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1932
专家分:2992
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:3 
如何把出现的次数以小到大和以大到小进行排列?
问题如下图示例:

有什么好的编程方法来处理?

图片附件: 游客没有浏览图片的权限,请 登录注册


最开始我想到的是用数组,冒号分割,那么数字分别在数组 2 4 6 8 ....的位置,但并不好排序。

[此贴子已经被作者于2022-3-4 11:00编辑过]

搜索更多相关主题的帖子: 排列 数组 次数 数字 出现 
2022-03-04 10:58
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1932
专家分:2992
注 册:2009-12-22
收藏
得分:0 
程序代码:
For i = 0 To lenArr - 1
        For j = i To lenArr
            If (CInt(strArr2(i, 1)) > CInt(strArr2(j, 1))) Then
                t1 = strArr2(i, 0)
                t2 = strArr2(i, 1)
                strArr2(i, 0) = strArr2(j, 0)
                strArr2(i, 1) = strArr2(j, 1)
                strArr2(j, 0) = t1
                strArr2(j, 1) = t2
                
            End If            
        Next
    Next
    
    StrLine = ""
    
    For i = 0 To lenArr '组合字符串
        StrLine = StrLine & strArr2(i, 0) & "" & strArr2(i, 1) & vbCrLf
    Next
    
    Text2.Text = StrLine

End Sub


这一段代码没看懂,我慢慢研究。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-03-04 16:44
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1932
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回复 2楼 apull
要处理的文件,放在桌面上。
1.txt (5.65 KB)

下面代码生成的结果会一行空行,后面会多三行空格。不知怎么去掉,求指教。

我的代码如下:

程序代码:
Private Sub Form_Load()
    Me.Hide
    Dim strArr() As String
    Dim strArr2() As String
    Dim StrLine As String
    Dim buffer As String
    Open "C:\Users\Admin\Desktop\1.txt" For Input As #1
    Do While Not EOF(1)
    Line Input #1, buffer
    StrLine = StrLine + buffer + vbCrLf
    Loop
    StrLine = Left(StrLine, Len(StrLine) - 1)  '读取文件的全部内容,并去除最后一个回车符
    Close #1
    
    strArr = Split(StrLine, vbCrLf)  '分割成一维数组
    
    lenArr = UBound(strArr)   '一维数组的数量
    ReDim strArr2(lenArr, 1)  '定义一个二维数组
    
    For i = 0 To lenArr '分割成二维数组
        t = Split(strArr(i), "")
        strArr2(i, 0) = t(0) '记录数据的文字部分
        strArr2(i, 1) = t(1) '记录数据的数字部分
    Next
    
    For i = 0 To lenArr - 1
        For j = i To lenArr
            If (CLng(strArr2(i, 1)) > CLng(strArr2(j, 1))) Then
                t1 = strArr2(i, 0)
                t2 = strArr2(i, 1)
                strArr2(i, 0) = strArr2(j, 0)
                strArr2(i, 1) = strArr2(j, 1)
                strArr2(j, 0) = t1
                strArr2(j, 1) = t2
                
            End If
        Next
    Next
    
    StrLine = ""
    
    
    For i = 0 To lenArr '组合字符串
        StrLine = StrLine & strArr2(i, 0) & "" & strArr2(i, 1) & vbCrLf
    Next
    StrLine = Left(StrLine, Len(StrLine) - 1) '去除最后面一个回车符
    Open "C:\Users\Admin\Desktop\2.txt" For Output As #1
    Print #1, StrLine
    Close #1

End Sub

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-03-04 17:12
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1932
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回车符只减了1长度导致的问题,经测试。

[此贴子已经被作者于2022-3-4 20:21编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-03-04 20:15
快速回复:如何把出现的次数以小到大和以大到小进行排列?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018099 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved