从1KW条数据中筛选出1W条最大的数
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApp3
{
class Program
{
static LinkedList<int> sortArrayLink = new LinkedList<int>();
static void Main(string[] args)
{
//算法测试 在1KW条数据中取得最大的1W条
//生成数据
int[] randomInt = getRandomInt(10000000);
int[] sortArray = randomInt.Take(10000).ToArray();
randomInt = randomInt.Skip(10000).ToArray();
sortArray = sortArray.OrderByDescending(u=>u).ToArray(); var item= sortArrayLink.AddFirst(sortArray[0]);
for (int i = 1; i < sortArray.Length; i++)
//生成链表
sortArrayLink.AddAfter(item,sortArray[i]);
//开始排序
Stopwatch watch = new Stopwatch();
watch.Start();
int rpCount = 0; foreach (var num in randomInt)
{
rpCount++;
Insert(num);
}
watch.Stop();
Console.WriteLine(watch.Elapsed);
//foreach (var num in sortArrayLink)
//{
// Console.WriteLine(num);
//}
Console.ReadLine(); }
/// <summary>
/// 获取指定长度的随机数据
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
static int[] getRandomInt(int length) {
//开始循环获取数据
int[] randomInt = new int[length];
for (int i = 0; i < length; i++)
{
Random r = new Random(i);
randomInt[i] = r.Next(length); }
return randomInt;
}
/// <summary>
/// 尝试插入到排序数组
/// </summary>
/// <param name="sortArray">已经排序好的数组</param>
/// <param name="insertNum">需要插入的数据</param>
static void Insert(int insertNum) {
var item = sortArrayLink.Last; if (insertNum < item.Value) return;
var first = sortArrayLink.First;
if (insertNum > first.Value)
{
sortArrayLink.AddBefore(first, insertNum);
sortArrayLink.RemoveLast();//移除最后一个
return;
}
if (insertNum == first.Value)
{
sortArrayLink.AddAfter(first, insertNum);
sortArrayLink.RemoveLast();//移除最后一个
return; }
while (item.Next!= null)
{ if (item.Value < insertNum)
{
item = item.Next;
continue;
}
sortArrayLink.AddAfter(item, insertNum);
sortArrayLink.RemoveLast();//移除最后一个
return;
} }
}
}
i5下运行

不计算生成数据时间 耗时0.27S 内存占用227MB
从1KW条数据中筛选出1W条最大的数的更多相关文章
- sql 查询某个条件多条数据中最新的一条数据或最老的一条数据
sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...
- insert 一条数据 然后拿出这条数据在数据库中生成的ID
[insert 一条数据 然后拿出这条数据在数据库中生成的ID] <insert id="insert" parameterType="management&quo ...
- 关于如何在mysql中插入一条数据后,返回这条数据的id
简单的总结一下如何在mysql中出入一条数据后,返回该条数据的id ,假如之后代码需要这个id,这样做起来就变得非常方便,内容如下: <insert id="insertAndGetI ...
- 南昌网络赛 Distance on the tree 主席树+树剖 (给一颗树,m次查询ui->vi这条链中边权小于等于ki的边数。)
https://nanti.jisuanke.com/t/38229 题目: 给一颗树,m次查询ui->vi这条链中边权小于等于ki的边数. #include <bits/stdc++.h ...
- 原!!mysql,几十万条数据中随机抽取1万以内的数据
想了几种方法: 1.将所有符合条件的对象集合都查出来,在代码里做随机. 2.先查出所有符合条件的id,再代码随机需要抽查数量的id,再 到数据库 中 in. 3.利用order by rand() l ...
- EF GroupBy 根据key 分组 再把key求和(取决于每条数据中 arr的条数) arr 中有多少条数据 就把多少个key 加起来
List<A> alist = new List<A>{ ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ...
- 每次选中数组中的N条数据, 如果让每条数据被选中的次数做到平均??
经常有这样的需求, 有一组数据, 每次展示其中的1条或N条,希望每条数据展示量可以做到平均. 一开始想依次展示每条数据并做记录,整组数据全展示一遍之后清除记录, 然后一直循环下去. 实现的过程中又觉得 ...
- mysql 多条数据中,分组获取值最大的数据记录
摘要: 多条纪录中,几个字段相同,但是其中一个或者多个字段不同,则去该字段最大(这里只有一个不同) 源数据: 目的是移除:在同一天中只能存在一天数据,则取审核日期最大,数据库脚本如下: SELECT ...
- MySQL重复数据中限定操作n条
对于一个表,有时可能里面有很多重复的条,比如: +-----------+---------+| coupon_id | user_id |+-----------+---------+| 8 | 1 ...
随机推荐
- 【推导】【DFS】Codeforces Round #429 (Div. 1) B. Leha and another game about graph
题意:给你一张图,给你每个点的权值,要么是-1,要么是1,要么是0.如果是-1就不用管,否则就要删除图中的某些边,使得该点的度数 mod 2等于该点的权值.让你输出一个留边的方案. 首先如果图内有-1 ...
- 8VC Venture Cup 2016 - Elimination Round G. Raffles 线段树
G. Raffles 题目连接: http://www.codeforces.com/contest/626/problem/G Description Johnny is at a carnival ...
- 安装配置convirture
Author: Jin Date: 20130627 Title: 安装配置convirture 参考: http://www.convirture.com/wiki/index.php?title= ...
- [典型漏洞分享]一个典型的软件漏洞--memcpy导致的缓冲区溢出
YS VTM模块存在缓冲区溢出漏洞,可导致VTM进程异常退出[高] 问题描述: YS VTM模块开放对外监听端口(8554和8664),并从外部接收网络数据,中间模块调用到memcpy函数对网络数据进 ...
- POJ 2079 Triangle(凸包+旋转卡壳,求最大三角形面积)
Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 7625 Accepted: 2234 Descript ...
- Delphi DevExpress下载
http://download.csdn.net/detail/wozengcong/8395285#comment
- Java RSA加密算法生成公钥和私钥
原文:http://jingyan.baidu.com/article/6dad5075f33466a123e36ecb.html?qq-pf-to=pcqq.c2c 目前为止,RSA是应用最多的公钥 ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- 解决kylin报错 ClassCastException org.apache.hadoop.hive.ql.exec.ConditionalTask cannot be cast to org.apache.hadoop.hive.ql.exec.mr.MapRedTask
方法:去掉参数SET hive.auto.convert.join=true; 从配置文件$KYLIN_HOME/conf/kylin_hive_conf.xml删掉 或 kylin-gui的cube ...
- 万里长征第二步——django个人博客(第七步 ——上传文件)
在项目目录下新建一个 ‘uploads’文件夹以保存上传的文件 配置setting.py文件 MEDIA_URL = '/uploads/' MEDIA_ROOT = os.path.join(BAS ...