01 如果不缺内存,如何使用一个具有库的语言来实现一种排序算法以表示和排序集合?

1 Array.Sort(array);

02 如何使用位逻辑运算(例如与,或,移位)来实现位向量。

重要的概念:用一个n位长的字符串来表示一个所有元素都小于n的简单非负整数集合。

相对一般的数据而言,其特点是:

a,数据限制在一个范围里

b,数据没有重复

c,数据没有其他的关联项

int n = 100;byte[] array = new byte[n];//可以储存[0,n*8)的数

//用int m举例,假设m在范围内int m,index,step;//index确定byte数组的索引位置,step确定byte[index]里的bit位index = m/8;step = m%8;byte temp = 1;temp = temp<<step;array[index] = array[index]||temp;

疑问:书中似乎是用byte位做标识的,因为“原话是用一个n位的字符串来表示文件”,用bit可以进一步压缩空间,因为每一个位上的值只是0或者1。

03 假设n为10000000,输入文件包含1000000个整数。使用位图排序并与系统排序比较效率。

系统排序的时间复杂度为O(nlogn),简单位图排序的时间复杂度是O(n)。

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace _01._03{class Program    {static void Main(string[] args)        {//模拟的数据源,看上去本身就是排好序的...            int arrayLength = 1000000;int[] array = new int[arrayLength];for (int i = 0; i < arrayLength; i++)            {                array[i] = i;            }int resultLength = arrayLength / 8;byte[] result = new byte[resultLength];//125000个byte就可以装下结果,新建的时候自动全设为0            int index, step,byteSize = sizeof(byte)*8;byte temp;foreach (var item in array)            {                temp = 1;                index = item / byteSize;                step = item % byteSize;                temp = (byte)(temp << step);                result[index] =(byte)(result[index] + temp);            }        }    }}

最后的结果里每个byte都是0XFF,今天先到这。

转载于:https://www.cnblogs.com/yuklin/archive/2011/12/06/2277962.html

Programming Pearls Essay 01相关推荐

  1. Game Programming with DirectX -- 01[初识Direct3D]

    Game Programming with DirectX -- 01[初识Direct3D] 第一卷 朦胧的3D世界 第一集 初识Direct3D 简介 我们通过2个例子来简单的认识3D 1.1 接 ...

  2. 动态规划算法(Dynamic Programming)之0-1背包问题

    文章目录 1. 问题引入 2. 动态规划求解0-1背包 3. 复杂度 4. 0-1背包升级版(带价值) 5. 0-1背包升级版(带价值)DP解法 1. 问题引入 前面讲了0-1背包的回溯解决方法,它是 ...

  3. Happy Programming Contest(01背包)

      In Zhejiang University Programming Contest, a team is called "couple team" if it consist ...

  4. Programming Pearls: Chatper3 Problem5 [Hyphenation Words]

    Program Source Code Lesson Learned: selecting the correct data structure makes coding/algorithm pret ...

  5. Programming Pearls: Chatper3 Problem6 [Form letter generator]

    Program source code Lesson Learned: please verify your thought carefully and slowly during pseudocod ...

  6. 重读《Programming Pearls》之十:Squeezing Space

    The Key--Simplicity: Simplicity can yield functionality, robustness, speed and space. Techniques for ...

  7. 计算机专业免费电子书下载列表List of freely available programming books

                                    计算机专业免费电子书下载列表                       List of freely available progra ...

  8. Paradigm Shifts in Kernel Programming 内核编程的范式转移

    Paradigm Shift in Kernel Programming 内核编程的范式转移 Raymond Kwan 这篇小文章主要分析了操作系统内核编程中主要使用C和命令式范式的原因,同时讨论了其 ...

  9. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

最新文章

  1. 【星辰傀儡线·命运环·卷二 尘埃】 5 困惑
  2. 浅析java中的语法糖
  3. C语言函数 snprintf()(发送有限字符截断字符串输出到 str 所指向的字符串)(字符串拼接、截断拼接)
  4. 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用
  5. .NET Core 3.1之深入源码理解HealthCheck(二)
  6. Java集合(3)--Iterator迭代器
  7. 为什么阿里要和小米在智能音箱上死磕?
  8. 记账系统推荐金蝶精斗云_金蝶精斗云的免费财务做账软件有哪些?
  9. matlab 求不规则体积,matlab,求不规则三维图形体积?
  10. 5 mysql 凤舞天骄_浅谈5行刺客的技能 凤舞天骄
  11. 50.网络安全渗透测试—[穷举篇13]—[wfuzz多线程百万密码测试指定后台破解]
  12. 触摸DevOps,从现在开始DevOps之旅
  13. 精通 CSS+DIV 网页样式与布局 57
  14. 学ps要计算机基础吗,零基础怎样学会PS?电脑0零基础绘画
  15. 电影主题HTM5网页设计作业成品——爱影评在线电影(10页面)使用dreamweaver制作采用DIV+CSS进行布局
  16. 上亿海量数据处理方法
  17. 倍福PLC和C#通过ADS通信传输bool类型变量
  18. python3-函数与参数以及空值
  19. 201421410039鹿永润实验二第一部分
  20. 行为识别(Action Recognition)初探

热门文章

  1. 下载python后怎样打开-下载python后如何启动
  2. r语言和python-R语言和Python哪个适合生物信息学?
  3. python制作工资计算器-Python实现扣除个人税后的工资计算器示例
  4. python画图简单代码-用python进行简单的画图操作
  5. python叫什么-什么叫Python运算符重载
  6. 如何查看python是多少位的-如何查看Python的位数
  7. 爬虫好学吗python-爬虫Python入门好学吗?学什么?
  8. python上海培训哪里比较好-python培训班上海哪里比较好?
  9. python2好还是python3好-总结对比Python2和Python3之间的区别
  10. python中文件读写位置的作用-文件操作,读,写,指定位置