小代码 位图

#include<iostream>
#include<vector>
#include<string>
using namespace std;
 class bitmap
{
 public:
  bitmap(size_t n):_size(0)
  {
   _a.resize((n>>5)+1);
  }
 
void set(size_t x)
{
size_t index=x>>5;
size_t num=x%32;
 _a[index] |=(1<<num);
 }
void reset (size_t x)
{
size_t index=x>>5;
size_t num=x%32;
_a[index] &=~(1<<num);  
}
bool test(size_t x)
{
size_t index=x>>5;
size_t num=x%32;
return _a[index&(1<<num)];
}
protected:
vector<size_t>_a;
size_t _size;
};
/***********
//size 不能简单的size++
	//需要之前判断是存在
	//库里面的名字是bitset
		size_t   -1
		pow2(32)
		优点 省空间
		缺点 不能表示次数
********/
void test(int n)
{
	bitmap bp(100);
	cout<<"begin:"<<bp.test(n)<<endl;
	bp.set(n);
	cout<<"then:"<<bp.test(n)<<endl;
	bp.reset(n);
	cout<<"then:"<<bp.test(n)<<endl;
	cout<<"--------"<<endl;
}
int test2(int len)
{
	//int a[]={1,3,5,2,4,6,6,7,7,9,1,2,3};//测试通过
	//int a[]={1,3,5,2,4,6};
int tmp,i,j;  int ct=0;
	int a[10]={0};
	for(i=0;i<10;i++)
	{
	a[i]=len-i;
	}
	 
//int len=sizeof(a)/sizeof(a[0]);
for(i=1;i<len;i++)
{
	tmp=a[i];
	j=i-1;
while(a[j]>tmp)
{
a[j+1]=a[j];
j--;
ct++;
}
a[j+1]=tmp;
}
for(i=0;i<len;i++)
{
cout<<a[i]<<" " ;
}
cout<<endl<<"n="<<len<<" ct"<<ct<<endl;
 
return 0;
}
/****
int main()
{
	 int n=10;
	test2(4);
	test2(5);
	test2(6);
	test2(7);
	cin>>n;
	return 0;
}
****/
int main()
{
	 
}
/*********
比较次数和移动数据次数是一致的
时间复杂度O(n^2)
最坏情况下n(n-1)/2 次
可推理 也可由程序输出的 n ct序列看出规律
***********/

时间: 2024-10-29 10:38:57

小代码 位图的相关文章

iOS开发中一些有用的小代码

1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&qu

【processing】小代码

今天无意间发现的processing 很有兴趣 实现很简洁 void setup(){ } void draw(){ background(255); if(mouseX < width/2 && mouseY > height/2) { fill(0); rect(0,height/2,width/2,height/2); } } 这个小小的代码可以实现 当鼠标位于画布左下方时显示一个黑色的框 -----------------------------------------

Js 常用小代码

//判断一个汉子等于两个字符 function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var a = val.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } else { len += 1; } } return len; } Js 常用小代码

小代码 &nbsp; 密码转置 **级 &nbsp; &nbsp; 复习aito ASCII 码值

/**************** WZ  ASUST  2016 写小代码 就是练习小心吧 *****************/ int main() { int x=1,i,j,k; char s;char ss[20]="zZ+_+_+{}{}{}"; cout<<"start:"<<ss<<endl; for(i=0;i<strlen(ss);i++) { if((ss[i]>64&&ss[i]

一段小代码说明@property装饰器的用法

#coding:utf-8 """ 一段小代码说明@property装饰器的用法.__name是私有变量 外部不能通过foo.__name访问,但可以通过foo._Foo__name访问. 如果想通过点运算符设置和访问实例属性怎么办,@property派上用途了, 先将一个方法头上加上@property,这个方法就变成实例属性了,再加上这个@get_name.setter 装饰器(@属性名.setter)就可以通过赋值来设置属性. python北京周末培训班 https://

JavaScript自己模仿jQuery的一点小代码

function seter(sId) {    var obj = document.getElementById(sId);    return new function () {        var objN = obj;        this.html = function (sHtml) {            objN.innerHTML = sHtml;        };    };} 这样的代码有怎样的作用呢? 假如HTML代码中有如下的内容: <div id="S

【processing】小代码4

translate(x,y);  移动坐标原点到x,y处 rotate(angle); 坐标沿原点顺时针转动angle度 scale(n); 绘制图像放大n倍 pushMatrix() 将当前坐标压入栈 popMatrix() 将坐标弹栈 -------------------------------------- windows系统下 用P3D一直报错,检查的时候还把之前写好的东西给弄没了  郁闷 换linux 终于可以显示了 但是smooth()不能用,说我硬件不支持. 而且linux下写的

Android版微信小代码(转)

以下代码仅适用于Android版微信: //switchtabpos:让微信tab更贴合Android Design 如果你并不喜欢微信Android版和iOS端同用一套UI,现在有一个小方法可以实现Tab的转移:在微信任意聊天窗口输入//switchtabpos并按发送,Tab就会从转移到屏幕顶端,Android范十足.如果想再调整回来,再输入一遍并发送就好了. //multiwebview:将微信聊天页和文章页拆分为两个任务卡片 在任意聊天窗口输入//multiwebview并发送,聊天和文

小代码背后的大道理

先看这段代码 通过指针可以直接访问内存,而在C#中这属于不安全操作,为了能让代码编译运行因此都要带上unsafe,这个不用管它.这段代码主要是借助单字节数据类型byte,直接访问内存,查看各种数据类型的数据在内存的存放情况.在往常认为整数0,1,2,3,4,5……之类的存放在内存的就是转换成二进制再放进去:而字符则是先通过字符编码转换,比如ASCII码A,B,C,D转换成01000001,01000010,01000011再放进去.当然这个层次还不够细.想当年在大学时代知道这些还算过得去了.直到