知识大全 PHP实现插入排序算法

Posted

篇首语:好人的天生欲望是知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP实现插入排序算法相关的知识,希望对你有一定的参考价值。

PHP实现插入排序算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  插入排序(Insertion Sort) 是一种较稳定 简单直观的排序算法 插入排序的工作原理 是通过构建有序序列 对于未排序的数据 在有序序列中从后向前扫描 找到合适的位置并将其插入 插入排序 在最好情况下 时间复杂度为O(n);在最坏情况下 时间复杂度为O(n );平均时间复杂度为O(n )

  插入排序示例图

>

  

  /**

  * 数据结构与算法(PHP实现) - 插入排序(Insertion Sort)。Tw.WiNGwit

  *

  * @author 创想编程(TOPPHP.ORG)

  * @copyright Copyright (c) 2013 创想编程(TOPPHP.ORG) All Rights Reserved

  * @license /licenses/mit-license.php MIT LICENSE

  * @version 1.0.0 - Build20130613

  */

  class InsertionSort

  /**

  * 需要排序的数据数组。

  *

  * @var array

  */

  private $data;

  /**

  * 数据数组的长度。

  *

  * @var integer

  */

  private $size;

  /**

  * 数据数组是否已排序。

  *

  * @var boolean

  */

  private $done;

  /**

  * 构造方法 - 初始化数据。

  *

  * @param array $data 需要排序的数据数组。

  */

  public function __construct(array $data)

  $this->data = $data;

  $this->size = count($this->data);

  $this->done = FALSE;

  

  /**

  * 插入排序。

  */

  private function sort()

  $this->done = TRUE;

  for ($i = 1; $i < $this->size; ++$i)

  $current = $this->data[$i];

  if ($current < $this->data[$i - 1])

  for ($j = $i - 1; $j >= 0 && $this->data[$j] > $current; --$j)

  $this->data[$j + 1] = $this->data[$j];

  

  $this->data[$j + 1] = $current;

  

  

  

  /**

  * 获取排序后的数据数组。

  *

  * @return array 返回排序后的数据数组。

  */

  public function getResult()

  if ($this->done)

  return $this->data;

  

  $this->sort();

  return $this->data;

  

  

  ?>

  示例代码 1

  2

  3

  4

  $insertion = new InsertionSort(array(9, 1, 5, 3, 2, 8, 6));

  echo \'

  \', print_r($insertion->getResult(), TRUE), \'

\'; cha138/Article/program/PHP/201311/20783

相关参考

知识大全 php 地区分类排序算法

本篇文章是对使用php实现地区分类排序算法进行了详细的分析介绍需要的朋友参考下   写一个函数将数据$array=array(=>array("""河北")=>array("""

知识大全 PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

PHP冒泡排序二分查找顺序查找二维数组排序算法函数的详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 第8章排序(算法设计)习题练习

将哨兵放在R[n]中被排序的记录放在R[n]中重写直接插入排序算法以单链表作为存储结构实现直接插入排序算法 设计一算法使得在尽可能少的时间内重排数组将所有取负值的关键字放在所有取非负值的关键

知识大全 排序之二分插入排序

二分插入排序  二分插入排序查找操作利用二分查找来实现由此进行的插入排序称为二分插入排序二分插入排序算法 cha138/Article/program/sjjg/201311/23

知识大全 排序算法的各趟排序算法

  以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态  ()直接插入排序()希尔排序()冒泡排序()快速排序  ()直接选择排序()堆排序()归并排序()基数排序  上述方

知识大全 排序算法的各趟排序算法

  以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态  ()直接插入排序()希尔排序()冒泡排序()快速排序  ()直接选择排序()堆排序()归并排序()基数排序  上述方

知识大全 排序 - 插入排序 - 直接插入排序(二)

  哨兵的作用  算法中引进的附加记录R[]称监视哨或哨兵(Sentinel)  哨兵有两个作用  ①进人查找(插入位置)循环之前它保存了R[i]的副本使不致于因记录后移而丢失R[i]的内容;  ②它

知识大全 java的排序算法

  插入排序:    packagerututilalgorithmsupport;  importrututilalgorithmSortUtil;  publicclassInsertSortim

知识大全 java的各种排序算法

  Java代码  插入排序:    packagerututilalgorithmsupport;  importrututilalgorithmSortUtil;  publicclassInse

知识大全 常见排序算法的java实现

  最近在面试遇到很多排序算法问题总结一下  定义数组如下  [java]  int[]array=newint[];  int[]array=newint[];  首先是插入排序  [java]