文档章节

排序算法_已迁移

辣条拌鱼翅
 辣条拌鱼翅
发布于 2015/10/09 00:14
字数 676
阅读 129
收藏 4
//问: 如果有100个灯,走一次就关闭自己的倍数的灯,  然后+1 重新走 再次按倍数的关灯  到100个灯的时候这个灯是亮的还是关闭的
//答: 与自己走过的次数取模成功 然后累加取模成功的数量,再次与2取模如果成功那么就是亮的否则就是关闭的
function light($num)
{
	$a = 1;
	
	for ($i=1; $i <= $num; $i++) { 
		echo '<div style="width:20px;height:20px;background-color:#faa2f2;float:left;margin-left:10px"></div>';
	}
	echo '<br /><hr />';
	//$color = array('#f2f2f2','#a2a2a2');
	for ($z=1; $z <= $num; $z++) { 
		for ($x=1; $x <= $z; $x++) { 
			if ($z%$x == 0) {
				@$sum[$z] += 1;
			}
			//echo '<div style="width:20px;height:20px;background-color:#000;float:left;margin-left:10px"></div>';
		}
		for ($j=$z; $j <= $num; $j++) { 
			if($j%$z == 0){
				$color = '#f2f2f2';
			}else{
				$color = '#faa2f2';
			}
			//echo '<div style="width:20px;height:20px;background-color:'.$color.';float:left;margin-left:10px">'.$j.'</div>';
		}
		
		if($sum[$z]%2 == 0){
			//echo '第'.$z.'次亮的';
			$last = '第'.$z.'次亮的';
		}else{
			$last = '第'.$z.'次不亮的';
		}
		//echo '<br /><br />';
	}

	echo $last;
}

light(16); //求第十六次灯是否亮的


冒泡排序算法 

    //由小往大排序 冒泡
    public function bubble_sort($arr) {
        $n=count($arr);
            for($i=0;$i<$n-1;$i++){
                for($j=$i+1;$j<$n;$j++) {
                    if($arr[$j]<$arr[$i]) {
                        $temp=$arr[$i];
                        $arr[$i]=$arr[$j];
                        $arr[$j]=$temp;
                    }
                }
            }
        return $arr;
    }
环境 WampServer Version 2.5  框架 onethink1

        # 3000 数据 字段 uid,nickname 用时 1.492003267   
        # 6000 数据 用时 5.957014533               4.9290100
        # 9000 数据 用时 13.890031832  只有一个字段 11.3481670


    快速排序法

function quick_sort($arr) {
$n=count($arr);
if($n<=1)
return $arr;
$key=$arr[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<$n;$i++) {
if($arr[$i]<=$key)
$left_arr[]=$arr[$i];
else
$right_arr[]=$arr[$i];
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}

在 WampServer Version 2.5  环境中

 ini_set('xdebug.max_nesting_level', 2000); #递归次数设置在 2000次,但实际上只到400多点  , 再多就会被限制
 
 测试在 300条数据运行时间为  0.02600128 s

关于递归: 逻辑上的递归可以无次数限制, 但语言执行器或者程序堆栈会限制递归的次数.

  

  插入排序  维基百科

    public function insertSort($arr) {
        $n=count($arr);
            for($i=1;$i<$n;$i++) {
            $tmp=$arr[$i];
            $j=$i-1;
                while($arr[$j]>$tmp) {
                    $arr[$j+1]=$arr[$j];
                    $arr[$j]=$tmp;
                    $j--;
                    if($j<0)
                        break;
                }
            }
        return $arr;
    }
    
算法思路
1.从第一个元素开始,该元素可以认为已经被排序
2.取出下一个元素,在已经排序的元素序列中从后向前扫描
3.如果该元素(已排序)大于新元素,将该元素移到下一位置
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5.将新元素插入到该位置后
重复步骤2~5

#实验结果 与冒泡与快速排序相比 同样环境中  同样数据 9000条
冒泡耗时: 13s
插入耗时: <1s



© 著作权归作者所有

辣条拌鱼翅
粉丝 25
博文 268
码字总数 73301
作品 0
朝阳
程序员
私信 提问
算法基础:五大排序算法Python实战教程

本文为 AI 研习社编译的技术博客,原标题 : A tour of the top 5 sorting algorithms with Python code 作者 | George Seif 翻译 | 邓普斯•杰弗 校对 | shunshun 整理 | 菠萝妹 原文链接:...

雷锋字幕组
01/07
0
0
维基百科上的算法和数据结构链接很强大

突然发现维基百科上的算法和数据结构比百度百科强多啦,图文并茂。 其实这个网站不错:http://www.sorting-algorithms.com 冒泡排序: bubble冒泡的意思 http://zh.wikipedia.org/wiki/%E5%8...

晨曦之光
2012/03/09
2.3K
1
排序(上):冒泡排序、插入排序和选择排序

如何分析一个排序算法? 分析一个排序算法的三要素:排序算法的执行效率、排序算法的内存消耗以及排序算法的稳定性。 排序算法的执行效率 对于排序算法执行效率的分析,一般是从以下三个方面...

hardyyao
2018/11/04
0
0
Hyperledger Fabric 1.4 特性调研之Raft共识(一)

Raft是一种crash fault tolerant (CFT,崩溃故障容错)的共识排序算法。如果有节点故障掉线可以正常运行,前提是要有大多数存活,即保证1/2以上的节点个数正常运行。raft共识是“主从模型”,...

RaeSnow
07/07
0
0
排序算法——冒泡排序VS插入排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26545305/article/details/87988991 一、概述 最经典、最常用的排序算法有:冒泡排序、插入排序、选择排序...

LemmonTreelss
03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部