php二维数组排序方法

合集下载

php 去除二维数组中某一列重复的数据的方法

php 去除二维数组中某一列重复的数据的方法

要在PHP 中去除二维数组中某一列的重复数据,你可以使用array_map() 函数和array_unique() 函数结合来实现。

下面是一个示例代码,展示如何去除二维数组中某一列的重复数据:php<?php// 原始的二维数组$originalArray = [['id' => 1, 'name' => 'John'],['id' => 2, 'name' => 'Jane'],['id' => 3, 'name' => 'John'],['id' => 4, 'name' => 'Alice'],['id' => 5, 'name' => 'John']];// 提取指定列的值并去除重复项$columnValues = array_map(function($item) {return $item['name'];}, $originalArray);$uniqueColumnValues = array_unique($columnValues);// 根据去重后的值重新索引数组$resultArray = [];foreach ($uniqueColumnValues as $value) {foreach ($originalArray as $item) {if ($item['name'] === $value) {$resultArray[] = $item;break;}}}// 打印结果数组print_r($resultArray);>在上述示例中,我们首先定义了一个原始的二维数组$originalArray,其中包含了一些重复的列数据。

php的9个经典排序算法

php的9个经典排序算法

以下是使用PHP 实现的9个经典的排序算法:1. 冒泡排序```function bubble_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}for ($i = 0; $i < $n; $i++) {for ($j = 0; $j < $n - $i - 1; $j++) {if ($arr[$j] > $arr[$j+1]) {$temp = $arr[$j+1];$arr[$j+1] = $arr[$j];$arr[$j] = $temp;}}}return $arr;}```2. 选择排序```function selection_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}for ($i = 0; $i < $n; $i++) {$minIndex = $i;for ($j = $i+1; $j < $n; $j++) {if ($arr[$j] < $arr[$minIndex]) {$minIndex = $j;}}$temp = $arr[$i];$arr[$i] = $arr[$minIndex];$arr[$minIndex] = $temp;}return $arr;}```3. 插入排序```function insertion_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}for ($i = 1; $i < $n; $i++) {$value = $arr[$i];$j = $i - 1;for (; $j >= 0; $j--) {if ($arr[$j] > $value) {$arr[$j+1] = $arr[$j];} else {break;}}$arr[$j+1] = $value;}return $arr;}```4. 快速排序```function quick_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}$pivotIndex = floor($n/2);$pivot = $arr[$pivotIndex];$left = array();$right = array();for ($i = 0; $i < $n; $i++) {if ($i == $pivotIndex) {continue;} else if ($arr[$i] < $pivot) {$left[] = $arr[$i];} else {$right[] = $arr[$i];}}return array_merge(quick_sort($left), array($pivot), quick_sort($right));}```5. 归并排序```function merge_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}$mid = floor($n/2);$left = array_slice($arr, 0, $mid);$right = array_slice($arr, $mid);$left = merge_sort($left);$right = merge_sort($right);$newArr = array();while (count($left) && count($right)) {$newArr[] = $left[0] < $right[0] ? array_shift($left) : array_shift($right);}return array_merge($newArr, $left, $right);}```6. 堆排序```function heap_sort(&$arr) {$n = count($arr);if ($n <= 1) {return;}build_heap($arr);for ($i = $n-1; $i > 0; $i--) {$temp = $arr[0];$arr[0] = $arr[$i];$arr[$i] = $temp;heapify($arr, 0, $i);}}function build_heap(&$arr) {$n = count($arr);for ($i = floor($n/2)-1; $i >= 0; $i--) {heapify($arr, $i, $n);}}function heapify(&$arr, $i, $n) {$left = 2*$i+1;$right = 2*$i+2;$largest = $i;if ($left < $n && $arr[$left] > $arr[$largest]) {$largest = $left;}if ($right < $n && $arr[$right] > $arr[$largest]) {$largest = $right;}if ($largest != $i) {$temp = $arr[$i];$arr[$i] = $arr[$largest];$arr[$largest] = $temp;heapify($arr, $largest, $n);}}```7. 希尔排序```function shell_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}$gap = floor($n/2);while ($gap > 0) {for ($i = $gap; $i < $n; $i++) {$temp = $arr[$i];for ($j = $i-$gap; $j >= 0 && $arr[$j] > $temp; $j -= $gap) {$arr[$j+$gap] = $arr[$j];}$arr[$j+$gap] = $temp;}$gap = floor($gap/2);}return $arr;}```8. 计数排序```function counting_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}$maxVal = max($arr);$countArr = array_fill(0, $maxVal+1, 0);for ($i = 0; $i < $n; $i++) {$countArr[$arr[$i]]++;}for ($i = 1; $i < $maxVal+1; $i++) {$countArr[$i] += $countArr[$i-1];}$tmpArr = array();for ($i = $n-1; $i >= 0; $i--) {$tmpArr[$countArr[$arr[$i]]-1] = $arr[$i];$countArr[$arr[$i]]--;}for ($i = 0; $i < $n; $i++) {$arr[$i] = $tmpArr[$i];}return $arr;}```9. 桶排序```function bucket_sort($arr) {$n = count($arr);if ($n <= 1) {return $arr;}$maxVal = max($arr);$bucketSize = 10;$bucketCount = floor($maxVal / $bucketSize) + 1;$buckets = array();for ($i = 0; $i < $bucketCount; $i++) {$buckets[$i] = array();}for ($i = 0; $i < $n; $i++) {$index = floor($arr[$i] / $bucketSize);array_push($buckets[$index], $arr[$i]);}$newArr = array();for ($i = 0; $i < $bucketCount; $i++) {$bucketArr = $buckets[$i];$len = count($bucketArr);if ($len > 1) {sort($bucketArr);}for ($j = 0; $j < $len; $j++) {array_push($newArr, $bucketArr[$j]);}}return $newArr;}```以上就是使用PHP 实现的9个经典的排序算法。

在c语言中二维数组的存放顺序

在c语言中二维数组的存放顺序

在c语言中二维数组的存放顺序
在C语言中,二维数组的存放顺序是按行存储的。

也就是说,先存储第一行的元素,然后是第二行的元素,以此类推,直到最后一行。

例如,下面是一个3行4列的二维数组:
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
存储顺序为:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
当我们使用arr[i][j]访问数组元素时,编译器会根据存储顺序来计算元素在内存中的地址。

例如,访问arr[1][2]时,编译器会计算出元素的地址为:
&arr[0][0] + sizeof(int) * (1 * 4 + 2) = &arr[1][2] 这个公式中,第一个参数表示数组起始地址,第二个参数表示行号和列号的组合,sizeof(int)表示一个int类型占用的字节数。

在使用二维数组时,了解存储顺序可以帮助我们更好地理解数组的内部结构,从而编写更加高效的代码。

- 1 -。

php求数组全排列,元素所有组合的方法总结

php求数组全排列,元素所有组合的方法总结

php求数组全排列,元素所有组合的⽅法总结本⽂实例讲述了php求数组全排列,元素所有组合的⽅法总结。

分享给⼤家供⼤家参考,具体如下:<?php$source = array('pll','我','爱','你','嘿');sort($source); //保证初始数组是有序的$last = count($source) - 1; //$source尾部元素下标$x = $last;$count = 1; //组合个数统计echo implode(',', $source), "<br>"; //输出第⼀种组合while (true) {$y = $x--; //相邻的两个元素if ($source[$x] < $source[$y]) { //如果前⼀个元素的值⼩于后⼀个元素的值$z = $last;while ($source[$x] > $source[$z]) { //从尾部开始,找到第⼀个⼤于 $x 元素的值$z--;}/* 交换 $x 和 $z 元素的值 */list($source[$x], $source[$z]) = array($source[$z], $source[$x]);/* 将 $y 之后的元素全部逆向排列 */for ($i = $last; $i > $y; $i--, $y++) {list($source[$i], $source[$y]) = array($source[$y], $source[$i]);}echo implode(',', $source), "<br>"; //输出组合$x = $last;$count++;}if ($x == 0) { //全部组合完毕break;}}echo 'Total: ', $count, "\n";>以上这篇php求数组全排列,元素所有组合的⽅法总结就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

PHP按指定键值对二维数组进行排序的方法

PHP按指定键值对二维数组进行排序的方法

PHP按指定键值对⼆维数组进⾏排序的⽅法本⽂实例讲述了PHP按指定键值对⼆维数组进⾏排序的⽅法。

分享给⼤家供⼤家参考,具体如下:问题:有数组:复制代码代码如下:array(0=>array('id'=>1,'price'=>50),1=>array('id'=>2,'price'=>60));要求根据数组的price这个字段进⾏排序。

实现代码如下:<?php$array[] = array('id'=>1,'price'=>50);$array[] = array('id'=>2,'price'=>70);$array[] = array('id'=>3,'price'=>30);$array[] = array('id'=>4,'price'=>20);foreach ($array as $key=>$value){$id[$key] = $value['id'];$price[$key] = $value['price'];}array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);echo '<pre>';print_r($array);echo '</pre>';>运⾏结果:Array([0] => Array([id] => 2[price] => 70)[1] => Array([id] => 1[price] => 50)[2] => Array([id] => 3[price] => 30)[3] => Array([id] => 4[price] => 20))希望本⽂所述对⼤家PHP程序设计有所帮助。

PHP统计二维数组元素个数的方法

PHP统计二维数组元素个数的方法

PHP统计二维数组元素个数的方法
数据表里面的字段content 存储了一个以逗号分割的字符串,最大有20个数,最大数字为40。

比如3,24,33,40类似字样的数字序列。

其实就是一个保存了多项投票结果的字段啦。

现在需要统计每个数字的个数,也就是每个投票项有多少人投了,并排序
解决思路
1. 首先从数据库的congtent字段读取数据,并把它们合并成一个字符串。

由于最后一个数后面有逗号,所以要对字符串进行截取。

2. 将字符串按逗号分割成数组。

3. 用 array_count_values() 统计一维数组的元素个数
由于array_count_values()貌似不能直接对二维数组的元素进行个数统计,所以进行了上面的两个步骤,得到一个一维数组。

array_count_values() 函数用于统计数组中所有值出现的次数。

返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

4. 排序。

PHP中二维数组排序usort和array_multisort的使用和性能比较

PHP中二维数组排序usort和array_multisort的使用和性能比较

PHP中⼆维数组排序usort和array_multisort的使⽤和性能⽐较usort 和 array_multisort 的使⽤function test(){$data = [['name' => '张三', 'sort' => 60],['name' => '李四', 'sort' => 50],['name' => '王五', 'sort' => 80],];// ⼀、按照sort字段顺序排序// 1、usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] > $b['sort'] ? 1 : -1;});// 2、array_multisortarray_multisort(array_column($data, 'sort'), SORT_ASC, $data);// ⼆、按照sort字段倒序排序// 1、usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] < $b['sort'] ? 1 : -1;});// 2、array_multisortarray_multisort(array_column($data, 'sort'), SORT_DESC, $data);}usort 和 array_multisort性能测试1、1000数据量function test(){$data = [];for ($i = 1; $i <= 1000; $i++) {$data[] = ['sort' => mt_rand(1, 100000000)];}$startTime = microtime(true);// 测试usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] < $b['sort'] ? 1 : -1;});// 测试array_multisort// array_multisort(array_column($data, 'sort'), SORT_DESC, $data);$endTime = microtime(true);$subTime = $endTime - $startTime;echo$subTime;exit;}测试结果:usort :0.0015461444854736 波动范围在 0.001 ~ 0.002array_multisort:0.00037407875061035 波动范围在 0.0002 ~ 0.00042、10000数据量function test(){$data = [];for ($i = 1; $i <= 10000; $i++) {$data[] = ['sort' => mt_rand(1, 100000000)];}$startTime = microtime(true);// 测试usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] < $b['sort'] ? 1 : -1;});// 测试array_multisort// array_multisort(array_column($data, 'sort'), SORT_DESC, $data); $endTime = microtime(true);$subTime = $endTime - $startTime;echo$subTime;exit;}测试结果:usort :0.021894931793213 波动范围在 0.020 ~ 0.023array_multisort:0.0053129196166992 波动范围在 0.0036 ~ 0.0078 3、100000数据量function test(){$data = [];for ($i = 1; $i <= 100000; $i++) {$data[] = ['sort' => mt_rand(1, 100000000)];}$startTime = microtime(true);// 测试usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] < $b['sort'] ? 1 : -1;});// 测试array_multisort// array_multisort(array_column($data, 'sort'), SORT_DESC, $data); $endTime = microtime(true);$subTime = $endTime - $startTime;echo$subTime;exit;}测试结果:usort :0.29409503936768 波动范围在 0.29 ~ 0.31array_multisort:0.060003042221069 波动范围在 0.058 ~ 0.078 4、500000数据量function test(){$data = [];for ($i = 1; $i <= 500000; $i++) {$data[] = ['sort' => mt_rand(1, 100000000)];}$startTime = microtime(true);// 测试usortusort($data, function ($a, $b) {if ($a['sort'] == $b['sort']) {return 0;}return$a['sort'] < $b['sort'] ? 1 : -1;});// 测试array_multisort// array_multisort(array_column($data, 'sort'), SORT_DESC, $data);$endTime = microtime(true);$subTime = $endTime - $startTime;echo$subTime;exit;}测试结果:usort :2.0687599182129 波动范围在 2.04 ~ 2.24array_multisort:0.40970206260681 波动范围在 0.39 ~ 0.41结论:从测试结果来看,⽆论数据量多⼤,array_multisort 的速度都要⽐ usort 快很多。

二维数组列优先顺序存储结构

二维数组列优先顺序存储结构

二维数组列优先顺序存储结构1. 引言在计算机科学中,二维数组是一种常见的数据结构,用于表示二维矩阵或表格。

它由一维数组的数组组成,可以在内存中以不同的方式进行存储。

本文将介绍一种常见的二维数组存储结构,即列优先顺序存储结构,它是一种将二维数组按列存储的方式。

2. 列优先顺序存储结构的定义列优先顺序存储结构是一种将二维数组按列存储的方式。

它可以通过将二维数组转换为一维数组来实现,其中一维数组的长度为二维数组的列数乘以行数。

3. 列优先顺序存储结构的特点列优先顺序存储结构具有以下特点:•内存占用小:相比于行优先顺序存储结构,列优先顺序存储结构的内存占用更小。

这是因为在列优先顺序存储结构中,相邻元素在内存中的存储位置更接近,减少了内存碎片。

•操作效率高:利用列优先顺序存储结构,可以更高效地进行某些操作,如矩阵的转置和乘法运算。

这是因为列优先顺序存储结构中,同一列的元素在内存中存储位置连续,可以在访问一列时,连续读取相邻元素,提高了访问速度。

•空间利用率低:列优先顺序存储结构在存储上的特点决定了它在存储二维稀疏数组时的空间利用率低。

由于采用了连续存储,对于值为0的元素,也需要分配内存空间。

•适用范围广:列优先顺序存储结构适用于一些需要频繁访问列中元素的场景。

例如,在一些数据处理和科学计算领域,需要针对二维数组的列进行快速计算和处理。

4. 示例与应用4.1 示例:转置矩阵转置矩阵是指将矩阵的行和列互换得到的新矩阵。

在列优先顺序存储结构中,可以通过修改数组的访问方式来实现矩阵的转置。

具体的步骤如下:1.定义一个与原矩阵列数和行数相反的新矩阵。

2.遍历原矩阵的行和列,将原矩阵中的元素复制到新矩阵的对应位置。

以下是一个示例代码,演示了如何使用列优先顺序存储结构来实现矩阵的转置:#include <iostream>using namespace std;const int MAX_SIZE = 100;void transposeMatrix(int matrix[][MAX_SIZE], int m, int n){int transMatrix[MAX_SIZE][MAX_SIZE];for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){transMatrix[j][i] = matrix[i][j]; // 将原矩阵的行和列互换}}cout << "转置矩阵为:" << endl;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cout << transMatrix[i][j] << " ";}cout << endl;}}int main(){int matrix[MAX_SIZE][MAX_SIZE];int m, n;cout << "请输入矩阵的行数和列数:";cin >> m >> n;cout << "请输入矩阵的元素:" << endl;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){cin >> matrix[i][j];}}transposeMatrix(matrix, m, n);return 0;}4.2 应用:科学计算在科学计算领域,矩阵的运算是非常常见的操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

php二维数组排序方法篇一:php多维数组排序php多维数组排序usort―采用用户自定义的比较函数对数组中的值展开排序说明boolusort(array&$array,callback$cmp_function)本函数将用用户自定义的比较函数对一个数组中的值进行排序。

如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。

比较函数必须在第一个参数被指出大于,等同于或大于第二个参数时分别回到一个大于,等同于或大于零的整数。

注意:如果两个成员比较结果相同,则它们在排序后的数组中的顺序未经定义。

到php4.0.6之前,用户自定义函数将保留这些单元的原有顺序。

但是由于在4.1.0中引进了新的排序算法,结果将不是这样了,因为对此没有一个有效的解决方案。

特别注意:本函数为array中的单元剥夺代莱键名。

这将删掉旧有的键名而不仅就是再次排序。

如果成功则返回true,失败则返回false。

采用多维数组的usort()例子java代码1.<?php2.functioncmp($a,$b)3.{4.returnstrcmp($a["fruit"],$b["fruit"]);5.}6.7.$fruits[0]["fruit"]="lemons";8.$fruits[1]["fruit"]="apples";9.$fruits[2]["fruit"]="grapes";10.ort($fruits,"cmp");12.13.while(list($key,$value)=each($fruits)){14.echo"/$fruits[$key]:".$value["fruit"]."/n";15.}16.?>[java]viewplaincopyprint?1.<?php2.functioncmp($a,$b)3.{4.returnstrcmp($a["fruit"],$b["fruit"]);5.}6.7.$fruits[0]["fruit"]="lemons";8.$fruits[1]["fruit"]="apples";9.$fruits[2]["fruit"]="grapes";10.ort($fruits,"cmp");12.13.while(list($key,$value)=each($fruits)){14.echo"/$fruits[$key]:".$value["fruit"]."/n";15.}16.?>当排序多维数组时,$a和$b包含到数组第一个索引的引用。

上例将输入:$fruits[0]:apples$fruits[1]:grapes$fruits[2]:lemons篇二:php处置二维数组(除去重复项,排序,切换,回去空白等)php处理二维数组(去除重复项,排序,转换,去空白等)1.php二维数组回去重复项函数php数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数//二维数组换成重复值functionunique_arr($array2d){foreach($array2das$v){$v=join(",",$v);//降维,也可以用implode,将一维数组转换为用逗号连接的字符串$temp[]=$v;}$temp=array_unique($temp);//换成重复的字符串,也就是重复的一维数组foreach($tempas$k=>$v){$temp[$k]=explode(",",$v);//再将拆下的数组再次装配}return$temp;}2.二维数组的排序方法一维数组排序方法:公用函数:{echo'<pre>';print_r($arr);echo'</pre><br>';}第一组:sort和rsort,按照php数组键值的顺序asc和逆序desc进行排序,同时破坏原来数组的索引关系――其实是删除索引之后重新建立从0开始的数字索引。

$a=array('a'=>1,2);sort($a);printr($a);rsort($a);printr($a);/*array([0]=>1[1]=>2)array([0]=>2[1]=>1)*/第二组函数:asort和arsort,这两个函数就比较难受一点了,只要他们可以留存数组旧有的索引关系,把上例的sort和rsort分别用这两个函数替代一下$a=array('a'=>1,2);arsort($a);printr($a);/*array([a]=>1[0]=>2)array([0]=>2[a]=>1)*/第三组php数组排序函数:krsort和ksort这两个不同于以上两组,这两函数就是对键名展开排序的.$a=array('a'=>1,2);ksort($a);printr($a);krsort($a);printr($a);/*array([0]=>2[a]=>1)array([a]=>1[0]=>2)*/通过自定义函数对php数组展开排序,存有三个函数分别就是:uasort通过自定义函数对php数组的键值进行排序,并且保留原来的索引关系。

uksort通过自定义函数对php数组的键名展开排序,并且留存原来的索引关系。

usort通过自定义函数对php数组的键值进行排序,并且删除原来的索引关系,从零开始建立新的索引。

/***@packagebugfree*@version$id:functionsmain.inc.php,v1.322021/09/2411:38:37wwccssexp$***sortantwo-dimensionarraybysomeleveltwoitemsusearray_multisort()function.**syssortarray($array,"key1","sort_asc","sort_retular","key2"……)*@authorchunshengwang<>*@paramarray$arraydatathearraytosort.*@paramstring$keyname1thefirstitemtosortby.*@paramstring$sortorder1theordertosortby("sort_asc"|"sort_desc")*@paramstring$sorttype1thesorttype("sort_regular"|"sort_numeric"|"sort_string" )*@returnarraysortedarray.*/functionsyssortarray($arraydata,$keyname1,$sortorder1="sort_asc",$sorttype1= "sort_regular"){if(!is_array($arraydata)){return$arraydata;}//getargsnumber.$argcount=func_num_args();//getkeystosortbyandputthemtosortrulearray.for($i=1;$i<$argcount;$i++){$arg=func_get_arg($i);if(!eregi("sort",$arg)){$keynamelist[]=$arg;$sortrule[]='$'.$arg;}else{$sortrule[]=$arg;}}//getthevaluesaccordingtothekeysandputthemtoarray.foreach($arraydataas$key=>$info){foreach($keynamelistas$keyname){${$keyname}[$key]=$info[$keyname];}}//createtheevalstringandevalit.$evalstring='array_multisort('.join(",",$sortrule).',$arraydata);';eval($evals tring);return$arraydata;}实例://#################示例#################$arr=array(array('name'=>'自学','size'=>'1235','type'=>'jpe','time'=>'1921-11-13','class'=>'dd',),array('name'=>'中国功夫','size'=>'153','type'=>'jpe','time'=>'2021-11-13','class'=>'jj',),array('name'=>'编程','size'=>'35','type'=>'gif','time'=>'1997-11-13','class'=>'dd',),array('name'=>'中国功夫','size'=>'65','type'=>'jpe','time'=>'1925-02-13','class'=>'yy',篇三:php数组排序与搜寻揭秘(传智播客听讲笔记韩顺平老师)数组的排序这里我们了解一些常用的排序方法,排序就是一个程序员的基本功1.冒泡法2.挑选排序法3.插入排序法4.快速排序法基本概念:就是将一组数据,按照某个顺序排列的过程排序分两大类:1.内部排序法以上方法都属内部排序法2.外部排序法因为数据量大,必须借助外部排序法冒泡排序法<?php//直观的排序$arr=array(0,5,-1);$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);//封装成函数,利于以后使用<?phpfunctionbubblesort($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;}}}return$arr;}$arr=array(0,5,-1);$bubblearray=bubblesort($arr);print_r($bubblearray);>选择排序法///挑选排序法functionselectsort(&$arr){$temp=0;for($i=0;$i<count($arr)-1;$i++){//假设$i就是最轻的数$minval=$arr[$i];//记录我指出的最轻数的负号$minindex=$i;for($j=$i+1;$j<count($arr);$j++){}}//说明我们认为的最小值不是最小值if($minval>$arr[$j]){$minval=$arr[$j];$minindex=$j;}}//最后交换$temp=$arr[$i];$arr[$i]=$arr[$minindex];$arr[$minindex]=$temp;插入排序法//插入排序法functioninsertsort(&$arr){$newarr=array();$newarr[0]=$arr[0];//先默认下标为0这个数已经是有for($i=1;$i<count($arr);$i++){for($j=$i-1;$j>=0;$j--){if($newarr[$j]>$arr[$i]){$temp=$newarr[$j];$newarr[$j]=$arr[$i];$newarr[$j+1 ]=$temp;}else{$newarr[$j+1]=$arr[$i];break;}}}$arr=$newarr;}$arr=array(3,8,-10,10,4,7,9,4);insertsort($arr);print_r($arr);从效率来看:冒泡法《选择排序法《插入排序法搜寻揭秘介绍两种方法:1.顺序搜寻对某个数组,按照顺序一个一个的比较,然后找到你要的数据案例:要求从一个数组$arr=array(46,90,900,-1)中查找一个数34,如果查找则输出该数的下标,如果找不到则输出查无此数$arr=array(46,90,900,0,-1,-1);functionsecrch(&$arr,$findval){$flag=false;for($i=0;$i<count($arr);$i++){if($findval==$arr[$i]){echo"找出了,负号为=$i";$flag=true;break;}}if(!$flag){echo"查询不到";}}secrch($arr,-1);2.二分查找法所谓二分搜寻,它存有一个关键的前提,该数组本身已经就是一个有序数组,如果该数组不是有序的,则必须先排序再搜寻//二分查找函数functionbinarysearch(&$arr,$findval,$leftindex,$rightindex){if($rightindex<$leftindex){echo"打听没该数。

相关文档
最新文档