从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 ...
随机推荐
- 【AC自动机】HDU中模板题
[HDU2222] 最纯粹的裸题,错误点详见注释. #include<iostream> #include<cstdio> #include<cstring> #i ...
- 二叉搜索树BStree
二叉搜索树,实际上是有点类似于二分查找.实际上很简单,就是递归.直接上代码,有点要注意的就是删除的时候,如果是左子树和右子树都存在的话,要寻找继承者(successor). import java.u ...
- Educational Codeforces Round 9 A. Grandma Laura and Apples 水题
A. Grandma Laura and Apples 题目连接: http://www.codeforces.com/contest/632/problem/A Description Grandm ...
- http-server 超轻量级web服务器
有的时候做前端,想要运行一些代码,但是又没有必要使用tomcat或者Apache http server,这个时候一个轻量级的简单的http server就可以搞定了. Http-server是基于n ...
- Android网络通信框架LiteHttp2.0 开篇简介和大纲目录
本帖最后由 移动天宇 于 2015-10-26 10:42 编辑 LiteHttp2.0很多东东焕然一新,旧的能力也得到增强,没有使用的同学来了解一下吧. Android网络框架为什么可以选用lite ...
- response letter模板
Dear Dr. or Prof. XXXX (family name of the Editor or Editor-in-Chief who issued the decision letter) ...
- net登录积分(每天登录积分仅仅能加一次) 时间的比較
public void jifenchange()//积分方法 { //积分模块//推断如今的日期和任务完毕日志数据库取出来 的日期大小,注意:Compare()方法仅仅会 ...
- 浏览器下载附件Content-Disposition
Content-disposition是MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)协议的扩展,MIME协议指示MIME用户代理如何 ...
- 捕获和记录SQL Server中发生的死锁
经带在论坛上看到有人在问怎么捕获和记录死锁信息,在这里,我将自己的一些心得贡献出来,与大家分享,也请各位指正. 我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息.但这种方 ...
- unity 显示mipmaplevel
https://docs.unity3d.com/ScriptReference/Texture2D.SetPixels.html 显示mipmaplevel 需要贴图可读写不压缩 using Uni ...