美文网首页
常用的排序算法

常用的排序算法

作者: kimcastle | 来源:发表于2022-02-22 11:32 被阅读0次

1. 冒泡排序:

冒泡排序法

<?php

//冒泡排序法

$lists = [20,5,33,14,28,38,1];

//统计数组个数

$len = count($lists);

//这里 $i=0 可以看做第一个位置

for($i = 0; $i < $len; $i++){

    for($j = $i+1; $j < $len; $j++){

      // $j 从第二个位置开始一直到最后一个位置, 取到对应值与 第一个位置 ($i = 0) 进行比较,这样第一趟后,$i = 0 就是最小值了,

      // 也就是所谓的 “冒泡”

      //与 $i=0 位置数值进行比较交换

      if($lists[$i] > $lists[$j]){

          $temp = $lists[$i];

          $lists[$i] = $lists[$j];

          $lists[$j] = $temp;

      }

    }   

}

print_r($lists);

?>

2.快速排序法

快速排序法
<?php

//快速排序法必须定义一个“递归”函数
function fastSort($arr){
    //定义“递归”退出机制
    $len = count($arr);
    if($len <= 1) return $arr;
    
    //定义枢轴为每个数组第一个数值
    $middle = $arr[0];
    //初始化作用两边数组
    $left = $right = [];
    //根据枢轴区分左右两边数组内容
    for($i = 1; $i < $len; $i++){
        if($arr[0] > $arr[$i]){
            array_push($left,$arr[$i]);
        }else{
            array_push($right,$arr[$i]);
        }
    }
    
    //左右数组进行“递归”处理
    $left = fastSort($left);
    $right = fastSort($right);
    
    return array_merge(array_merge($left,[$middle]),$right);
    
}

//快速排序法
$lists = [20,5,33,14,28,38,1];
$lists = fastSort($lists);


print_r($lists);

?>

3.插入排序法

插入排序法
<?php
//插入排序法
$lists = [20,5,33,14,28,38,1];

$len = count($lists);

//采用插入位置(从第二个位置数值开始),与前面数值进行比较交换位置
//最终开始到插入位置是一个有序的从小到大的排序 (插入位置为最大值)
for($i = 1; $i < $len; $i++){
    //前面数值与插入位置值进行比较,调换值
    for($j=0; $j < $i; $j++){
        if($lists[$i] < $lists[$j]){
            $temp = $lists[$j];
            $lists[$j] = $lists[$i];
            $lists[$i] = $temp;
        }
    }
}

print_r($lists);

?>

4.选择排序法

选择排序法
<?php
//选择排序法
$lists = [20,5,33,14,28,38,1];
$len = count($lists);
//从第一个位置先后面跑
for($i=0; $i<$len; $i++){
    //第一个位置默认为最小值
    $key = $i;
    //从第二个位置数值开始进行比较
    for($j=$i+1; $j<$len; $j++){
        if($lists[$j] < $lists[$i]){
            //获取第一个位置最小值位置
            $key = $j;
        }
    }
    
    //将第一次最小值位置值与第一个位置数值进行调换
    if($i != $key){
        $temp = $lists[$key];
        $lists[$key] = $lists[$i];
        $lists[$i] = $temp;
    }
}
print_r($lists);

?>

5.归并排序法

归并排序法
<?php
//归并排序
function mergeSort($arr)
{
    $n = count($arr);
    //设置好递归函数退出机制
    if($n <= 1){
        return $arr;
    }
    //对数组进行左右递归切割
    $half = ceil($n/2);
    $temp = array_chunk($arr,$half);
    $left = mergeSort($temp[0]);
    $right = mergeSort($temp[1]);
    
    $reg = [];
    while(count($left) && count($right)){
        if($left[0] < $right[0]){
            $reg[] = array_shift($left);
        }else{
            $reg[] = array_shift($right);
        }
    }
    return array_merge($reg,$left,$right);
}


//归并排序法
$lists = [20,5,33,14,28,38,1,8];
$lists = mergeSort($lists);
print_r($lists);

?>

相关文章

  • 算法04-棋牌游戏常用排序算法

    算法04-棋牌游戏常用排序算法 一、介绍 棋牌游戏常用排序算法包括:链式基数排序、插入排序、希尔排序。 二、链式基...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 常用的排序算法

    常用的排序算法 常用的排序算法插入排序折半插入排序shell 排序冒泡排序选择排序快速排序基数排序归并排序堆排序K...

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • 常用算法

    常用排序算法

  • 常见排序算法

    常用排序算法

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、...

  • 常用排序算法

    常用的排序算法 在此总结一下常用排序算法的代码实现 #include using namespace std;t...

网友评论

      本文标题:常用的排序算法

      本文链接:https://www.haomeiwen.com/subject/jthglrtx.html