博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高效率随机删除数据(不重复)
阅读量:6264 次
发布时间:2019-06-22

本文共 1148 字,大约阅读时间需要 3 分钟。

算法的复杂度就降低为 O(n) ,速度大大提高。

需求:前后数据x条不动,中间随机删除N条记录

高效率随机删除数据 不重复

 

实现:

Dictionary
dictA = GetArrayListFromTxt(this.txtFileNameA.Text);Dictionary
dictB = GetArrayListFromTxt(this.txtFileNameB.Text);Dictionary
dictC= new Dictionary
();StringBuilder sb=new StringBuilder();foreach (var item in dictB){if (dictA.ContainsKey(item.Key)){dictA.Remove(item.Key);dictC.Add(item.Key, item.Value);sb.AppendLine(item.Key);}}textBox1.Text = sb.ToString();txtRepeatNum.Text = Convert.ToString(dictC.Count );foreach (object key in RandomValues(dictA,x).Take(n)){dictA.Remove(key.ToString());}

算法:

public static IEnumerable
RandomValues
(IDictionary
dict,int num){List
list = Enumerable.ToList( dict.Select(k=>k.Key).Skip(Convert.ToInt32(num)).Take(dict.Count - num * 2));Random rand = new Random();while (list.Count > 0){var point = rand.Next(0, list.Count);var rv = list[point];list[point] = list[list.Count - 1];list.RemoveAt(list.Count - 1);yield return rv;}}

转载于:https://www.cnblogs.com/zengxiangzhan/archive/2011/10/30/2229585.html

你可能感兴趣的文章
audit.rules
查看>>
Windows 10企业批量部署实战之WDS配置
查看>>
百元百鸡问题
查看>>
Microsoft System Center 2012部署(二)
查看>>
谈谈网站安全性的问题
查看>>
SQL Server 2017 AlwaysOn AG 自动初始化(三)
查看>>
AIX+RAC数据服务器开关机流程
查看>>
网关配置错误导致Outlook无法连线
查看>>
MongoDB查询 之 数组、内嵌文档和$where
查看>>
MS UC 2013-0-Prepare Tool
查看>>
《3D数学基础》2.1 矩阵基本概念、2.2 矩阵的数乘和加减法、2.3 方阵
查看>>
SCOM 2012 R2监控Microsoft Azure服务(1)配置管理包
查看>>
Lync Server外部访问系列PART5:模拟公网DNS
查看>>
[置顶] 基于ip的手机地理定位
查看>>
动态方法与动态代理(下篇)
查看>>
如果有天你看到我疯了,其实就是你疯了
查看>>
information_schema資料庫表信息
查看>>
使用W“.NET技术”CF实现SOA面向服务编程——简单的WCF开发实例
查看>>
【C#】利用TREE VIEW控件控制节点
查看>>
spring开发_使用p名称空间配置属性
查看>>