【数学/数组】的【排序/转换】问题,高分求最佳算法

shdfl 2008-07-26 08:48:27
  
一个巨型字符型数组(赋值长度为8字节),赋值规律为:
从 00000000 开始,按自然数递增,直至 99999999

如果将每个值的按0-9的【升序】的顺序重新排序,将会分别得到它们的1个【新值】

比如:
 原值   -->  新值
"00001234" --> "00001234"
"00012340" --> "00001234"
"00123400" --> "00001234"
"01234000" --> "00001234"
"12340000" --> "00001234"
"23400001" --> "00001234"
"34000012" --> "00001234"
"40000123" --> "00001234"

很显然,当所有的【原值】经过排序转换后,有N多的【新值】都是完全相同的


--------------------------------------------
需要解决的问题有两个,求它们的最佳算法

【问题1】
求这个巨型数组的所有【不同新值】的个数(及具体算法)
如果在排序的过程中,只保留最新出现的某个【新值】(也是字符型,长度8字节)
之后出现的与它完全相同的【新值】则全部过滤掉
也就是说,从 00000000 --> 99999999,一共存在多少个不同的【新值】


【问题2】
假定所有【不同新值】的个数是N个,N其实就是【问题1】的答案
然后将这【N个新值】按【从小到大】的顺序进行排序
这样每个【新值】都会得到1个【编号X】

那么,
如何将 00000000 --> 99999999 每个排序出来的【新值】
用其对应的【编号X】进行标记?

比如:已经存在某个库,库的记录数就是99999999+1条(00000000 --> 99999999)
如何将这个库里每条记录的【“新值编号”字段】的内容,更新为【编号X】

或者,对于数组里的任何1个【原值】,比如 “56892226”
它的【新值】就是 “22256689”
如何得到 “22256689” 的【编号X】


--------------------------------------------
我的水平实在很菜,对于【问题2】,只想到了循环替换
但因为数组记录数巨大,效率实在太低了

有请高手赐教高效算法


--------------------------------------------
另:提问时【给分框】的上限只有100分,如何给更多分?

  
...全文
125 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtogether 2008-07-26
  • 打赏
  • 举报
回复
不同值只有用字典了
Dim dic
Dim arr '巨型数组
Dim i
Set dic = Server.CreateObject("Scripting.Dictionary")
For Each i In arr
dic(i) = i
Next
arr = dic.items '这就是不同值的数组
Set dic = Nothing
然后再用冒泡也好,快速也好,二分也好,分段也好,反正谁最快就用谁
rankisky 2008-07-26
  • 打赏
  • 举报
回复
社区帮助里有积分说明。
jhwcd 2008-07-26
  • 打赏
  • 举报
回复
用快速排序法吧。
过一天可以再加分的。
目录 第一章 从零开始 8 1.1机试分析 8 1.2 IDE的选择与评测结果 10 1.3 DreamJudge的使用 11 1.4输入输出技巧 12 1.5头文件技巧 15 1.6数组使用技巧 16 1.7审时度势 — 复杂度与是否可做 19 1.8 C++ STL的使用 21 1.9多组输入的问题 27 第二章 入门经典 29 2.1 简单模拟 30 2.2 进制转换问题 32 2.3 排版类问题 37 2.4 日期类问题 42 2.5 字符串类问题 45 2.6 排序问题 47 2.7 查找类问题 54 2.8 贪心类问题 61 2.9 链表类问题 65 第三章 数学 68 3.1 同模余定理 69 3.2 最大公约数(GCD) 72 3.3 最小公倍数(LCM) 74 3.4 斐波那契数列 75 3.5 素数判定 76 3.6 素数筛选 78 3.7 分解素因数 81 3.8 二分快速幂 83 3.9 常见数学公式总结 85 3.10 规律神器OEIS 87 第四章 高精度问题 89 4.1 Python解法 90 4.2 Java解法 91 4.3 C/C++解法 92 第五章 数据结构 93 5.1 栈的应用 94 5.2 哈夫曼树 96 5.3 二叉树 102 5.4 二叉排序树 111 5.5 hash算法 114 5.6 前缀树 115 第六章 搜索 121 6.1 暴力枚举 122 6.2 广度优先搜索(BFS) 124 6.3 递归及其应用 127 6.4 深度优先搜索(DFS) 130 6.5 搜索剪枝技巧 135 6.6 终极骗分技巧 138 第七章 图论 139 7.1 理论基础 140 7.2 图的存储 145 7.3 并查集 148 7.4 最小生成树问题 151 7.5 最短路径问题 155 7.6 拓扑排序 162 第八章 动态规划 165 8.1 递推解 166 8.2 最大子段和 168 8.3 最长上升子序列(LIS) 170 8.4 最长公共子序列(LCS) 174 8.5 背包类问题 176 8.6 记忆化搜索 179 8.7 字符串相关的动态规划 182

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧