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实现一些常见的排序算法的更多相关文章

  1. 常见的排序算法总结(JavaScript)

    引言 排序算法是数据结构和算法之中的基本功,无论是在笔试还是面试,还是实际运用中都有着很基础的地位.这不正直七月,每年校招的备战期,所以想把常见的排序算法记录下来.在本篇文章中的排序算法使用 Java ...

  2. java编程之常见的排序算法

    java常见的排序算法 第一种:插入排序 直接插入排序 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的 ...

  3. Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构

    转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5492298.html 在面试中,经常会遇到一些考排序算法的题,在这里,我就简单了列举了几种最常见的排序算法供大家学习 ...

  4. java讲讲几种常见的排序算法(二)

    java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...

  5. java讲讲几种常见的排序算法

    java讲讲几种常见的排序算法(一) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 以数组array={6,3,20,8,15,1}为例 冒泡排序 思路:从第0个到 ...

  6. java几种常见的排序算法总结

    /*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int  ...

  7. Java实现常见的排序算法

    一.排序算法 常见的排序算法主要分为下面几类: 选择排序 堆排序 冒泡排序 快速排序 插入排序 希尔排序 归并排序 桶式排序 基数排序 本文主要介绍选择排序.堆排序.冒泡排序.快速排序和归并排序的原理 ...

  8. 七种常见经典排序算法总结(C++实现)

    排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...

  9. python3实现几种常见的排序算法

    python3实现几种常见的排序算法 冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...

  10. 用Java来写常见的排序算法

    随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * ...

随机推荐

  1. 20191105 《Spring5高级编程》笔记-第5章

    第5章 Spring AOP 面向切面编程(AOP)是面向对象编程(OOP)的补充.AOP通常被称为实施横切关注点的工具.术语横切关注点是指应用程序中无法从应用程序的其余部分分解并且可能导致代码重复和 ...

  2. 多线程04-ThreadPriority

        ; i < ; i++)             {                 Thread.Sleep();                 Console.WriteLine( ...

  3. [BZOJ2588]Count on a tree(LCA+主席树)

    题面 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问 ...

  4. Xilinx源语-------FDRE

    1.源语---FDRE FDRE代表一个单D型触发器,含的有五个信号分别为:  数据(data,D).时钟使能(Clock enable,CE).时钟(Clock).同步复位(synchronous ...

  5. LeetCode Lect7 堆及其应用

    概述 堆是一颗完全二叉树.分为大根堆(父节点>=所有的子节点)和小根堆(父节点<=所有的子节点). 插入.删除堆顶都是O(logN),查询最值是O(1). 完全二叉树(Complete B ...

  6. Vue slot-scope的理解(适合初学者)

    百度上已经有很多的关于slot-scope的文章,但我感觉都是那些以前没学好,又回头学的人,他们都使用了.Vue文件,我觉得有点不适合初学者,所以我就写一篇适合初学者的. 先抛例程: <!DOC ...

  7. jquery 在页面上根据ID定位(jQuery锚点跳转及相关操作)

    JQuery下锚点的平滑跳转 对于锚点的平滑跳转,在一般的商业性质的网站上,权衡来说,要谨慎使用. 例如:让页面平滑滚动到一个id为box的元素处,则JQuery代码只要一句话,关键位置 如下: $( ...

  8. Vue动态注册异步组件(非同一个工程的组件)

    前言:最近在掘金逛的时候,无意中看到前滴滴前端架构黄轶大佬,看到了大佬分享的一篇博客滴滴 webapp 5.0 Vue 2.0 重构经验分享 ,对于其中第5个问题(异步加载的业务线组件,如何动态注册? ...

  9. javaweb各种框架组合案例(九):springboot+tk.mybatis+通用service

    一.项目结构 二.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  10. 获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)

    模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP 192.168.109.137 :nginx01(充当第一层代理==F5)192.168.109.138 :nginx02(二 ...