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条最大的数的更多相关文章

  1. sql 查询某个条件多条数据中最新的一条数据或最老的一条数据

    sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...

  2. insert 一条数据 然后拿出这条数据在数据库中生成的ID

    [insert 一条数据 然后拿出这条数据在数据库中生成的ID] <insert id="insert" parameterType="management&quo ...

  3. 关于如何在mysql中插入一条数据后,返回这条数据的id

    简单的总结一下如何在mysql中出入一条数据后,返回该条数据的id ,假如之后代码需要这个id,这样做起来就变得非常方便,内容如下: <insert id="insertAndGetI ...

  4. 南昌网络赛 Distance on the tree 主席树+树剖 (给一颗树,m次查询ui->vi这条链中边权小于等于ki的边数。)

    https://nanti.jisuanke.com/t/38229 题目: 给一颗树,m次查询ui->vi这条链中边权小于等于ki的边数. #include <bits/stdc++.h ...

  5. 原!!mysql,几十万条数据中随机抽取1万以内的数据

    想了几种方法: 1.将所有符合条件的对象集合都查出来,在代码里做随机. 2.先查出所有符合条件的id,再代码随机需要抽查数量的id,再 到数据库 中 in. 3.利用order by rand() l ...

  6. 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=}, ...

  7. 每次选中数组中的N条数据, 如果让每条数据被选中的次数做到平均??

    经常有这样的需求, 有一组数据, 每次展示其中的1条或N条,希望每条数据展示量可以做到平均. 一开始想依次展示每条数据并做记录,整组数据全展示一遍之后清除记录, 然后一直循环下去. 实现的过程中又觉得 ...

  8. mysql 多条数据中,分组获取值最大的数据记录

    摘要: 多条纪录中,几个字段相同,但是其中一个或者多个字段不同,则去该字段最大(这里只有一个不同) 源数据: 目的是移除:在同一天中只能存在一天数据,则取审核日期最大,数据库脚本如下: SELECT ...

  9. MySQL重复数据中限定操作n条

    对于一个表,有时可能里面有很多重复的条,比如: +-----------+---------+| coupon_id | user_id |+-----------+---------+| 8 | 1 ...

随机推荐

  1. 【凸包】【三分】Gym - 101309D - Dome of Circus

    容易发现,圆锥体积和点的具体x.y坐标无关,只与其到z轴的距离sqrt(x*x+y*y)有关. 于是将这些三维的点都投射到二维的xOy平面的第二象限(sqrt(x*x+y*y),z),求个上凸壳,然后 ...

  2. 4425: [Nwerc2015]Assigning Workstations分配工作站

    4425: [Nwerc2015]Assigning Workstations分配工作站 Description Penelope is part of the admin team of the n ...

  3. #Html学习积累#分割线中间添加文字

    类似效果: ————————————xxxxx———————————————————— <!DOCTYPE HTML> <html> <head> <meta ...

  4. rman catalog配置简要笔记

    服务端配置: SQL> create tablespace tbs_rman datafile 'H:\oradata\test\tbs_rman.dbf' size 20m autoexten ...

  5. LaTeX:Figures, Tables, and Equations 插入图表和公式

    Figures To insert a figure in a LaTeX document, you write lines like this: \begin{figure} \centering ...

  6. jenkins的slave没有执行build,slave执行build失败

    1.slave的build配置如下 2.但是从控制台输出日志来看,pre steps和post steps都执行了,但是build没有执行 3.最后的错误信息如下: ERROR: Failed to ...

  7. springCloud微服务使用

    一.微服务简介 1.演变过程:单体架构.SOA.微服务 2.单体架构:一个应用包含了应用之间所有的功能程序,通过打成war包的方式发布部署. 缺点:复杂性逐渐偏高.技术债务逐渐变慢.阻碍技术的创新扩展 ...

  8. sql server 判断及增加列的默认值约束

    IF NOT EXISTS ( SELECT name FROM sysobjects WHERE id = ( SELECT syscolumns.cdefault FROM sysobjects ...

  9. conkey conf

    update_interval 1.0 # 更新时间间隔double_buffer yes # 双缓存,解决Conky闪烁问题use_xft yes # 自定义字体xftfont DejaVu San ...

  10. 【实践】关于p 标签内嵌 p标签的bug

    项目中遇到了一点小问题: 是这样的,在输入框包裹元素 p标签中想内嵌一个p 标签用作显示提示字符,谁知发生了一下一幕: 页面结构: <p class="modify-info-wrap ...