用PHP实现一些常见的排序算法
1、冒泡排序:
两两相比,每循环一轮就不用再比较最后一个元素了,因为最后一个元素已经是最大或者最小。
function maopaoSort ($list)
{
$len = count($list);
for ($i = 0; $i < $len - 1; $i++) {
for ($j = 0; $j < $len - $i - 1; $j++) {
if ($list[$j] > $list[$j + 1]) {
$tmp = $list[$j];
$list[$j] = $list[$j + 1];
$list[$j + 1] = $tmp;
}
}
}
return $list;
}
2、选择排序:
选定一个作为基本值,剩下的和这个比较,然后调换位置。
function xuanzeSort ($list)
{
$len = count($list);
for ($i = 0; $i < $len - 1; $i++) {
$pos = $i;
for ($j = $i + 1; $j < $len; $j++) {
if ($list[$pos] > $list[$j]) {
$pos = $j;
}
}
if ($pos != $i) {
$tmp = $list[$pos];
$list[$pos] = $list[$i];
$list[$i] = $tmp;
}
}
return $list;
}
3、快速排序:
原理就是拿出一个标尺值,然后分为左右两个数组,分别对比
function kuaisuSort ($list)
{
$len = count($list);
if ($len <= 1) {//递归出口
return $list;
}
$base = $list[0];//选择一个比较值
$leftList = $rightList = [];
for ($i = 1; $i < $len; $i++) {
if ($base > $list[$i]) {
$leftList[] = $list[$i];
} else {
$rightList[] = $list[$i];
}
}
//递归分别再处理左右两边的数组
$leftList = kuaisuSort($leftList);
$rightList = kuaisuSort($rightList);
return array_merge($leftList, [$base], $rightList);
}
4、插入排序:
假设前面的数都是排好顺序的,要把第n个数插入到有序里
function charuSort ($list)
{
$len = count($list);
for ($i = 1; $i < $len; $i++) {
$tmp = $list[$i];//获取对比元素
for ($j = $i - 1; $j > 0; $j--) {
if ($list[$j] > $tmp) {
$list[$j + 1] = $list[$j];
$list[$j] = $tmp;
} else {
break;
}
}
}
return $list;
}
用PHP实现一些常见的排序算法的更多相关文章
- 常见的排序算法总结(JavaScript)
引言 排序算法是数据结构和算法之中的基本功,无论是在笔试还是面试,还是实际运用中都有着很基础的地位.这不正直七月,每年校招的备战期,所以想把常见的排序算法记录下来.在本篇文章中的排序算法使用 Java ...
- java编程之常见的排序算法
java常见的排序算法 第一种:插入排序 直接插入排序 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的 ...
- Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构
转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5492298.html 在面试中,经常会遇到一些考排序算法的题,在这里,我就简单了列举了几种最常见的排序算法供大家学习 ...
- java讲讲几种常见的排序算法(二)
java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...
- java讲讲几种常见的排序算法
java讲讲几种常见的排序算法(一) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 以数组array={6,3,20,8,15,1}为例 冒泡排序 思路:从第0个到 ...
- java几种常见的排序算法总结
/*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int ...
- Java实现常见的排序算法
一.排序算法 常见的排序算法主要分为下面几类: 选择排序 堆排序 冒泡排序 快速排序 插入排序 希尔排序 归并排序 桶式排序 基数排序 本文主要介绍选择排序.堆排序.冒泡排序.快速排序和归并排序的原理 ...
- 七种常见经典排序算法总结(C++实现)
排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...
- python3实现几种常见的排序算法
python3实现几种常见的排序算法 冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...
- 用Java来写常见的排序算法
随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * ...
随机推荐
- JMeter学习笔记16-如何输出HTML格式的性能测试报告
文本来学习下,如何输入HTML格式的JMeter测试报告.前面已经介绍, 如果要做性能测试,需要在GUI上设计好你的Test Plan,设置各种场景和负载值,包括多少个线程,多少个用户,循环多少次.设 ...
- JAVA总结--正则表达式
正则表达式定义: pattern 对象是一个正则表达式的编译表示.Matcher 对象是对输入字符串进行解释和匹配操作的引擎.PatternSyntaxException 是一个非强制异常类,它表示一 ...
- jfinal+H5的websocket 实现同一账户在不同地点不同电脑只能登陆一个(互相踢下线)
jfinal+H5的websocket 实现同一账户在不同地点不同电脑只能登陆一个(互相踢下线):https://blog.csdn.net/liuyifeng1920/article/details ...
- js 判断是不是数字||判断字符串是不是数字(正则表达式)
js使用正则表达式判断对象是不是数字,或者字符串是不是数字,或者是不是数字类型 //判断是不是一个数字 或者 一个字符串里全是数字 isNumber (value) { if (value === u ...
- 问题 G: 圆桌上的晚餐
问题 G: 圆桌上的晚餐 时间限制: 1 Sec 内存限制: 128 MB提交: 1583 解决: 656[提交] [状态] [命题人:jsu_admin] 题目描述 大家一定在圆 ...
- 看漫画就能学SQL,简直太cool了
对于SQl, 很多人学不会的原因是从一开始就没明白,学这东西能干啥,学会了能有什么用.甚至有些人不知道'SQL'应该怎么读,以至于一开始兴致勃勃,但是学到一半放弃了. 注意:'sql'真的不能读成'烧 ...
- mysql语句之DDL
SQL分类: DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.常用的语句关键字主要包括create. ...
- webpack webpack.config.js配置
安装指定版本的webpack npm install webpack@3.6 -g 安装live-server 运行项目插件 输入live-server 运行后自动打开网页 npm ins ...
- Git命令——提交、查看、后退、前进
Git常用命令 1. 命令git init把这个目录变成Git可以管理的仓库: 2. 命令git commit把文件提交到仓库 这里需要注意的是,Git只能跟踪文本文件的改动,如txt文件,网页,所有 ...
- android 打卡 虚拟定位 sqlite
1.使用android5.1模拟器 android5.1模拟器使用数据库管理参数文件,6.0及以后的版本使用xml文件管理 2.使用sqlite修改配置文件 3.修改secure库中的android_ ...