PHP-----数组和常见排序算法
数组的创建
<?php
//php创建数组
//第一种方法
$arr[0]=1;
$arr[1]=23;
$arr[2]=20;
$arr[3]=43; for($i=0;$i<count($arr);$i++){
echo '<br>'.$arr[$i];
}
//第二种方法
$b=array(1,23,20,43); for($i=0;$i<count($b);$i++){
echo '<br>'.$b[$i];
} //第三种方法---自己指定下标----但是遍历数组的时候使用foreach循环
$c['paxster']='pax';
$c['boychik']='boy';
foreach($c as $val){
echo $val.'<br>';
}
foreach ($c as $key => $value) {
echo $key.'='.$value.'<br>';
} //js里的创建数组
//var arr=new Array();
//var a = new Array(5); 指定长度
//var abb=[];
?>
数组的遍历和一些细节。
还可以通过数组运算符对多个数组进行操作,详细参看php手册。
<?php
//1.
$arr=array(2=>'hello',22,33);
//echo $arr[1];---->>报错
//echo $arr[3];---->>22
//echo $arr[5];---->>报错 //2.重新赋值--------用后定义的值覆盖即可
$abb=array(1=>4,32,23);
$abb[1]=40;
echo $abb[1]; //3.布尔值作为下标
$acc[true]='wuhan';
$acc[false]='hubei';
$acc[null]='china';
$acc[12.3]='earth'; echo $acc[1].'<br>';
echo $acc[0].'<br>';
echo $acc[null].'<br>';
echo $acc[''].'<br>'; echo $acc[12];
echo $acc[12.3]; //打印数组的详细信息
print_r($acc);
var_dump($acc); //4.动态改变数组
$add=array(2,3);
$add[4]=34;
echo $add[4];//会把两者之间空余的元素忽略,后面添加的元素追加到前面的地址上 //5.数组引用的陷阱---会把addme解析为常量,提示notice,所以把addme定义为一个字符串就不会出错
const addme='QQ';
$e[addme]='me';
echo $e[addme]; //6.is_array----是则返回1,不是则返回空
$f=array(00,12);
echo is_array($f); //拆分字符串explode
$g='1 2 3 4 5';
$h='1-2-3-4-5';
$gg=explode(" ",$g);
$hh=explode("-",$h);
print_r($gg);
print_r($hh); //使用4种方式遍历数组
//for
$dd=array(20,30,40,50,60); for($i=0;$i<count($dd);$i++){
echo '<br/>'.$dd[$i];
}
//while
$i=0;
while($i<count($dd)){
echo '<br/>'.$dd[$i];
++$i;
//$i++;
}
//do..while
$i=0;
do{
echo '<br/>'.$dd[$i];
++$i;
}while($i<count($dd));
//foreach
foreach($dd as $key => $value){
//echo $key=$value.'<br/>';
echo "$key=$value<br/>";
}
?>
排序算法-----1.冒泡算法(去年学c的时候老师详细讲解了冒泡法,也是最简单的排序算法,计算效率相对较低)
//bubble sort
$arr=array(20,-20,0,5,-49);
/*$temp=0;
for($i=0;$i<count($arr)-1;$i++){
for($j=0;$j<count($arr)-1-$i;$j++){
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
print_r($arr);*/
//封装sort函数------形参加上地址符
function bubbleSort(&$arr){
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
for($j=0;$j<count($arr)-1-$i;$j++){
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
bubbleSort($arr);
排序算法-----2.选择排序
//selectSort选择排序法
function selectSort(&$arr){ for($i=0;$i<count($arr)-1;$i++){//减去自身
$temp=0;//中间变量
$min=$arr[$i];//假设最小值
$minIndex=$i;//对应的下标值
for($j=$i+1;$j<count($arr);$j++){//排好的不用再排
if($min>$arr[$j]){
$min=$arr[$j];
$minIndex=$j;
}
}
//交换值
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
}
selectSort($arr);
排序算法-----3.插入排序
//insertSort插入排序
function insertSort(&$arr){
for($i=1;$i<count($arr);$i++){
$insertValue=$arr[$i];
$insertIndex=$i-1;
while($insertIndex>=0&&$insertValue<$arr[$insertIndex]){
$arr[$insertIndex+1]=$arr[$insertIndex];
$insertIndex--;
}
$arr[$insertIndex+1]=$insertValue;
}
}
insertSort($arr);
print_r($arr);
var_dump($arr);
排序算法-----4.快速排序---各种语言的排序算法思想大同小异。php的快速排序算法算简单的,java更难一点。详情请点击
function quickSort($arr) {
if (count($arr) > 1) {
$k = $arr[0];
$x = array();
$y = array();
$_size = count($arr);
for ($i=1; $i<$_size; $i++) {
if ($arr[$i] <= $k) {
$x[] = $arr[$i];
} else {
$y[] = $arr[$i];
}
}
$x = quickSort($x);
$y = quickSort($y);
return array_merge($x, array($k), $y);
} else {
return $arr;
}
}
JS实现快速排序-----很好的一篇解释文章
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];//代表中位数
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。-----splice()详细
slice()选取数组元素。返回一个新的数组,包含从 start 到 end (不包括end元素)的 arrayObject 中的元素。
concat() 方法用于连接两个或多个数组。-----concat()详细
PHP-----数组和常见排序算法的更多相关文章
- Java基础语法(8)-数组中的常见排序算法
title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...
- 常见排序算法(附java代码)
常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...
- JavaScript版几种常见排序算法
今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...
- 常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- 常见排序算法总结 -- java实现
常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- [算法] 常见排序算法总结(C语言版)
常见排序算法总结 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序.插入排序.归并排序.希尔排序.快速排序等.算法性能比较如下图所示: 1 冒泡排序 基本原 ...
- 常见排序算法总结分析之选择排序与归并排序-C#实现
本篇文章对选择排序中的简单选择排序与堆排序,以及常用的归并排序做一个总结分析. 常见排序算法总结分析之交换排序与插入排序-C#实现是排序算法总结系列的首篇文章,包含了一些概念的介绍以及交换排序(冒泡与 ...
随机推荐
- Python强化训练笔记(三)——词频的统计
现有列表如下: [6, 7, 5, 9, 4, 1, 8, 6, 2, 9] 希望统计各个元素出现的次数,可以看作一个词频统计的问题. 我们希望最终得到一个这样的结果:{6:2, 7:1...}即 { ...
- ssh secure shell
ssh secure shell 和securecrt xhell一样,都是终端工具
- Windwos服务器远程桌面不能复制粘贴的解决方法
今天使用远程桌面连接登陆服务器,发现不能在本地电脑和远程服务器之间复制粘贴文件了,复制粘贴文本也不行. 网上搜了一下,主要有两种情况: 1.复制粘贴功能原本可以用,突然失灵了2.从头到尾都无法使用这个 ...
- kafka 安装
kafka是一个分布式的消息缓存系统 kafka集群中的服务器都叫做broker kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和brok ...
- in-list iterator
in-list iterator --针对目标sql的in后面是常量集合的首选项处理方法,其处理效率通常都会比in-list expansion高--使用in-list iterator的时候,in所 ...
- python实现并行爬虫
问题背景:指定爬虫depth.线程数, python实现并行爬虫 思路: 单线程 实现爬虫类Fetcher 多线程 threading.Thread去调Fet ...
- zjuoj 3601 Unrequited Love
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3601 Unrequited Love Time Limit: 16 Sec ...
- visual studio code + Nodejs + Typescritpt + angularjs2 + bootstrap 环境搭建/Elementary os
1.apt-get update 99% waiting for headers卡住了,fix如下 sudo apt-get clean cd /var/lib/apt sudo mv lists l ...
- 假如 Micromedia 没被收购,会不会早于 Apple 推动 H5、CSS3 的发展
看着如今大行其道的 H5.CSS3,想想当年的“网页三剑客”,不禁感慨:假如 Micromedia 没被收购,会不会早于 Apple 推动 H5.CSS3 的发展? 当时 Apple 先是询问 Ado ...
- php中rsa加密及解密和签名及验签
加密的内容长度限制为密钥长度少位,如位的密钥最多加密的内容为个长度. 公钥加密 $public_content=file_get_contents(公钥路径); $public_key=openssl ...