PHP实现位图位图排序和交集的方法

本文的实例介绍了php实现位图位图交叉排序的方法,供大家分享,供大家参考,如下:

一个0的字符串被初始化;

有一系列无序的整数数组;

如果整数x在整数数组中,则二进制字符串的x位置为1。

然后二进制字符串按顺序读取,1位转换成整数,序列存储在一组新的序列中。

分类代码:


函数排序()
{
/ / var_dump(php_int_max,php_int_size);
922337203685477580 int / int
8 int / int
位图= array_fill美元(0, 50, 0); / /申请一个整型数组,50个元素中,初始化是一个整数0
int_bit_size美元= php_int_size×8;二进制数字每个整数 / / $位图(在这种情况下,int = 8 * 8 = 64bit;$位图阵列是50 * 64 = 3200位),也就是说,它可以设置一个最大值3200的整数。
美元=阵列(1,4,3,50,346010088200150300); / /定义一系列混乱
每一个数字$扫描,将其转换为x * 64 + y
foreach($一$ K = $ V){
合上= $ V / int_bit_size美元;
玉树=美元以上int_bit_size美元;
1美元=玉树;
位图上} = { $美元美元美元美元上} {位图偏移/位|;位置1
}
位图中的位图在整数的输出中减少,可以按数组排序。
$ =数组();
foreach($位图作为$ K = $ V){
为($我= 0;美元美元美元我<< int_bit_size;i++){
$=1;
$标志$;
$ K / / $ { } = $标志* $ int_bit_size + $我:假;
如果($标志){
$ { } = k * $ int_bit_size + $我;
}
}
}
var_dump($);退出;
}




浏览器输出:

阵列

0 = int 1

1 = int 3

2 = int 4

3 = int 34

4 = int 50

5 = int 60

6 = int 88

7 = int 100

8 = int 150

9 = int 200

10 = int 300

求交点码:


公共函数排序($ =数组())
{
/ / var_dump (PHP_INT_MAX, PHP_INT_SIZE);
922337203685477580 int / int
8 int / int
位图= array_fill美元(0, 50, 0); / /申请一个整型数组,50个元素中,初始化是一个整数0
int_bit_size美元= php_int_size×8;二进制数字每个塑料 / / $位图(在这种情况下,int = 8 * 8 = 64bit;$位图阵列共50 * 64 = 3200位)
/ /美元=阵列(1,4,3,50,346010088200150300); / /无序数组
每一个数字$扫描,将其转换为x * 64 + y
foreach($一$ K = $ V){
合上= $ V / int_bit_size美元;
玉树=美元以上int_bit_size美元;
1美元=玉树;
位图上} = { $美元美元美元美元上} {位图偏移/位|;位置1
}
返回位图;
}
公共功能交叉()
{
int_bit_size美元= php_int_size * 8;
美元=阵列(1,4,3,50,346010088200150300);
$ =阵列(1,5,3,50,345510087222150300);
bit_a美元=美元->排序(美元);
bit_b美元=美元->排序($);
数组();
foreach(bit_a美元美元美元K = v){
{ } = K C美元美元美元美元美元bit_a { } { $ K K bit_b }; / /二交会计算
}
数组();
foreach($ C $ K = $ V){
为($我= 0;美元美元美元我<< int_bit_size;i++){
$=1;
$标志;
$ K / / $ { } = $标志* $ int_bit_size + $我:假;
如果($标志){
美元D { } = k * $ int_bit_size + $我;
}
}
}
var_dump($);退出;
}




浏览器输出:

阵列

0 = int 1

1 = int 3

2 = int 34

3 = int 50

4 = int 100

5 = int 150

6 = int 300

关于PHP相关内容的更多读者感兴趣的读者可以看到特别站:PHP阵列(阵列)技术PHP百科全书

希望本文能对PHP程序设计有所帮助。