1.归并排序

$a = [1, 4, 6, 8, 10, 14, 16];
$b = [2, 3, 5, 8, 9, 11];
function merge_sort($a, $b)
{
$a_i = $b_i = 0;
$count_a = count($a);
$count_b = count($b);
$ret = [];
while ($a_i < $count_a && $b_i < $count_b) {
if ($a[$a_i] > $b[$b_i]) {
array_push($ret, $b[$b_i]);
$b_i++;
} else {
array_push($ret, $a[$a_i]);
$a_i++;
}
}
if ($a_i < $count_a) {
$ret = array_merge($ret, array_slice($a, $a_i));
}
if ($b_i < $count_b) {
$ret = array_merge($ret, array_slice($b, $b_i));
}
return $ret;
} $ret = merge_sort($a, $b);
echo implode(',', $ret);

2.选择排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function select_sort(array $arr)
{
$count = count($arr);
if ($count < 2) return $arr;
for ($i = 0; $i < $count; $i++) {
$min = $arr[$i];
$min_i = $i;
for ($j = $i; $j < $count; $j++) {
if ($arr[$j] < $min) {
$min = $arr[$j];
$min_i = $j;
}
}
$arr[$min_i] = $arr[$i];
$arr[$i] = $min;
}
return $arr;
} $ret = select_sort($arr);
echo implode(',', $ret);

3.插入排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function insert_sort($arr)
{
$count = count($arr);
if ($count < 2) return $arr;
for ($i = 0; $i < $count; $i++) {
for ($j = $i; $j > 0; $j--) {
if ($arr[$j] < $arr[$j - 1]) {
$tmp = $arr[$j - 1];
$arr[$j - 1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
} $ret = insert_sort($arr);
echo implode(',', $ret);

4.冒泡排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function maopao_sort($arr)
{
$count = count($arr);
if ($count < 2) return $arr;
for ($i = 0; $i < $count; $i++) {
for ($j = 0; $j < $count - $i - 1; $j++) { // 注意$j的上限,小心数组越界
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j + 1];
$arr[$j + 1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
} $ret = maopao_sort($arr);
echo implode(',', $ret);

常见排序算法-php的更多相关文章

  1. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  2. JS常见排序算法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  4. 常见排序算法(JS版)

    常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...

  5. 常见排序算法-Python实现

    常见排序算法-Python实现 python 排序 算法 1.二分法     python    32行 right = length-  :  ]   ):  test_list = [,,,,,, ...

  6. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  7. python——常见排序算法解析

    算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...

  8. 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...

  9. 常见排序算法题(java版)

    常见排序算法题(java版) //插入排序:   package org.rut.util.algorithm.support;   import org.rut.util.algorithm.Sor ...

  10. [算法] 常见排序算法总结(C语言版)

    常见排序算法总结 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序.插入排序.归并排序.希尔排序.快速排序等.算法性能比较如下图所示: 1 冒泡排序 基本原 ...

随机推荐

  1. 导出txt格式的说明书

    /// <summary> /// 说明书 /// </summary> /// <returns></returns> public FileResu ...

  2. Linux trace使用入门

    概念 trace 顾名思义追踪信息,可通俗理解为一种高级打印机制,用于debug,实现追踪kernel中函数事件的框架.源代码位于:\kernel\trace\trace.c,有兴趣能够研究 撰写不易 ...

  3. 常用global.css

    html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin: ...

  4. spring boot 发布成包所需插件

    在pom.xml里配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> ...

  5. vsftpd 自动安装脚本

    #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'cpy' import os import re import sys impo ...

  6. 认识 service worker

    离线缓存可以提升用户体验,可以节省网络资源,但是,浏览器对资源缓存和自定义网络请求的控制一直不够完善,service worker 的出现就是为了解决这些问题 它可以解决目前离线应用的问题,同时也可以 ...

  7. android 在githup中的资源整理(转)

    1.Github开源Android组件资源整理(一) 个性化控件(View) 2.Github开源Android组件资源整理(二)ActionBar和Menu 3. Github开源Android组件 ...

  8. 【Caffe】源码解析----caffe.proto (转载)

    分析caffe源码,看首先看caffe.proto,是明智的选择.好吧,我不是创造者,只是搬运工. 原文地址:http://blog.csdn.net/qq_16055159/article/deta ...

  9. c 字符串 函数

    c编辑 strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NUL结 ...

  10. 点击textbox弹出对话框,返回弹出对话框的值

    主要是在父页面使用 function PopupWindow() {            window.open(url, "", "status=no,resizab ...