美文网首页
面试常见的基本排序算法简单理解

面试常见的基本排序算法简单理解

作者: Mr_Arvin | 来源:发表于2019-03-12 23:04 被阅读0次

1、冒泡排序

从前往后进行,比较相邻两个元素,小的往上冒,大的往下沉。

$arr = array(100,43,54,62,21,66,32,78,36,76,39);
//逻辑:从前往后进行,比较相邻两个元素,小的往上冒,大的往下沉
function mpSort($arr)
{
    $num = count($arr);
    for ($j=0; $j < $num; $j++) { //排序需要的冒泡次数
        for ($i=0; $i < $num-1; $i++) { //每次冒泡需要进行的比较次数
            if ($arr[$i] > $arr[$i+1]) {
                $tmp = $arr[$i];
                $arr[$i] = $arr[$i+1];
                $arr[$i+1] = $tmp;
            }
        }
    }

}
// mpSort($arr);

2、快速排序

选取一个基准元素,一般会选取第一个或者最后一个元素,以此为基准把序列拆分,左边为比基准值小的序列,右边为比基准值大的序列,以此类推利用递归重复不断拆分,直到不能拆分为止。

function ksSort($arr)
{
    $num = count($arr);
    if ($num <= 1) {//判断是否继续
        return $arr;
    }
    $p = $arr[0];//基准元素
    $aArr = array();
    $bArr = array();
    for ($i=1; $i < $num; $i++) { 
        if ($arr[$i] < $p) {
            $aArr[] = $arr[$i];
        }else {
            $bArr[] = $arr[$i];
        }
    }
    $aArr = ksSort($aArr);
    $bArr = ksSort($bArr);
    return array_merge($aArr,array($p),$bArr);
}

3、选择排序

选出最小的一个元素与第一个位置的元素交换,然后在剩下的数当中再找最小的与第二个位置的数交换。(这里可以假设最小值就是第一个元素)

function stSort($arr) {
//双重循环完成,外层控制轮数,内层控制比较次数
    $num=count($arr);
    for($i=0; $i<$num-1; $i++) {
        //假设最小的值的位置
        $p = $i;
        for($j=$i+1; $j<$num; $j++) {
            //$arr[$p] 是当前已知的最小值
            if($arr[$p] > $arr[$j]) {
            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
                $p = $j;
            }
        }
        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则互换位置。
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    //返回最终结果
    return $arr;
}

相关文章

  • 面试常见的基本排序算法简单理解

    1、冒泡排序 从前往后进行,比较相邻两个元素,小的往上冒,大的往下沉。 2、快速排序 选取一个基准元素,一般会选取...

  • 排序算法☞冒泡排序,插入排序,选择排序

    排序算法有很多,这里简单谈谈冒泡,插入,选择排序算法:1、冒泡排序:这个应该是比较常见,而且面试经常会考的。该排序...

  • 常见排序算法(一)及其Java实现

    概述 本文主要介绍面试常见的几种排序算法的基本思想、复杂度及其Java实现。包括冒泡、简单选择、直接插入和快速排序...

  • 排序

    排序是生活中常常会遇到的问题,也是面试中经常会问的算法,本文简单记录了常见的排序算法,使用C++与Python分别...

  • 排序算法

    排序算法 排序是最基本的算法之一,常见的排序算法有插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序及快速排...

  • 各种排序算法的使用范围

    面试题目:各种排序算法的使用范围 解析: 排序可以算是最基本,最常用的算法,也是笔试面试中最常被考的算法,最基本的...

  • 排序算法第一篇-排序算法介绍

    排序算法第一篇-排序算法介绍 在面试中,现在无论大小公司都会有算法的。其中排序算法也是一种很常见的面试题。比如冒泡...

  • 简单排序(选择排序、起泡排序和插入排序)使用详解

    简单排序算法 简单排序算法是一类算法,指那些直观、易理解的排序算法的总和。 到现在为止,我们已经讲了的三种排序算法...

  • 问题[●●●]:谈谈你所知道的排序算法

    排序可以算是最基本的,最常用的算法,也是笔试面试中最常被考察到的算法。最基本的冒泡排序,选择排序,插入排序要可以很...

  • 各种排序算法

    排序算法包括很多,常见的有快排,堆排序,冒泡排序,归并排序,选择排序,插入排序等, 各种排序算法经常出现在面试题中...

网友评论

      本文标题:面试常见的基本排序算法简单理解

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