1. import random 2. random.shuffle(alist)…
总览 (SYNOPSIS) sq < infile > outfile unsq < infile > outfile 描述 (DESCRIPTION) sq 压缩 一个 排过序的 单词 列表 (一个 字典). 比如: sort /usr/dict/words | sq | compress > words.sq.Z 会 大概 以 4 为 因数 压缩 字典. unsq 解压 sq 的 输出. 比如: compress -d < words.sq.Z | unsq | s…
#include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; int n,x; void fun(int n) { int left = 0, right = n-1; while(left < right) { int ans=a[left] + a[right]; if(ans == x) { cout<<a[left]<<' '<&…
1 建立链表(带哨兵位的)2 建立最小堆方法3 合并已排好序的k个链表 typedef int DataType; //建立链表 class Link { private: struct Node { DataType data; Node *next; }; Node *head; //哨兵位 public: Link() { Init(); } ~Link() { Delete(); } void Init() { head = new Node; head->next = NULL; }…
设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1).试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法.要求算法在最坏情况下所用的计算时间为O(N),只用到O(1)的辅助空间. //翻转字符串时间复杂度O(to - from) void reverse(int *a, int from, int to) { int t; for (; from < to; ++from, --to) { t = a[from]; a[from] = a[to]; a[to] = t…
假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」,然后将每段的数据进行乱序(即:段内数据乱序),形成一个新数组.请写一个算法,将所有数据从小到大进行排序,并说明时间复杂度. 涉及大数据处理:需要将数据hash若干小文件中,然后对各文件的数据进行排序,最后再进行堆排序或归并. #include <iostream> #include <…
如何打乱一个顺序的数组,其实集合的帮助类Collection就有现成的方法可用,而且效率还蛮高的,总比自定义随机数等等方法要好很多.其实乱序就这么简单,步骤如下: 1. 将一个顺序排列的数组添加到集合中 2. 可以用集合帮助类Collections的shuffle()方法 3. 用hasNext().next()方法遍历输入集合 /** * 随即打乱一个顺序de数组 */ import java.util.ArrayList; import java.util.Collections; impo…
平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分页输出时该怎么做呢? 总体思路是:使用SqlServer中的ROW_NUMBER() OVER(按某一属性升序或降序)函数来对我们所有的数据进行排序,从1开始,为每一条分组记录返回一个数字. 使用:SELECT * FROM (SELECT *,row=row_number() OVER(ORDER…
给定一个数组,将奇数放到前面,偶数放到后面,各自排好序 (2016年3月12日晚上,CVTE笔试编程第一道题): 思路很简单: (1)先将数组中的奇数和偶数分开(利用两个指针遍历一遍即可,同时统计好数组中奇数的个数): (2)然后分别进行快速排序. #include<iostream> #include<algorithm> #include<queue> using namespace std; void quick_sort(int *nums, int first…
腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?  这个题目已经有一段时间了,但是腾讯现在还在用来面试.腾讯第一次面试的时候我听面试官问其他人了.我不是故意的...     方案1:申请512M的内存,一个bit位代表一个unsigned int值.读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在.     方案2: 因为2^32为40亿多,所以给定一个数…