zoukankan      html  css  js  c++  java
  • 基础排序

    冒泡排序

    function bubble_sort($arr) {

    $n=count($arr);
    for($i=0;$i<$n-1;$i++){
        for($j=$i+1;$j<$n;$j++) {
            if($arr[$j]<$arr[$i]) {
                $temp=$arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$temp;
            }
        }
    }
    return $arr;

    }

    归并排序

    function mergeSort(&$arr, $start, $end)
    {
    if($start >= $end){
    return;
    }
    $middle = (int)(($start +$end)/2);
    mergeSort($arr, $start, $middle);
    mergeSort($arr, $middle+1, $end);

    merger($arr, $start, $middle, $end);
    }

    function merger(&$arr, $start, $middle, $end)
    {
    $i = $start;
    $j = $middle+1;
    $arrTemp =[];
    while($i<=$middle && $j<=$end){
    if($arr[$i] <= $arr[$j]){
    $arrTemp[] =$arr[$i];
    $i++;
    }else{
    $arrTemp[] =$arr[$j];
    $j++;
    }
    }
    while($i <= $middle){
    $arrTemp[] =$arr[$i];
    $i++;
    }
    while($j<=$end){
    $arrTemp[] =$arr[$j];
    $j++;
    }

    $i = $start;
    foreach ($arrTemp as $key=>$val){
    $arr[$i]= $val;
    $i++;
    }
    return ;
    }

    $arr=array(1,543,64564,89345,98723,77332);
    mergeSort($arr, 0,5);

    二分查找-递归

    function bin_search($arr,$low,$high,$value) {

    if($low>$high)
        return false;
    else {
        $mid=floor(($low+$high)/2);
        if($value==$arr[$mid])
            return $mid;
        elseif($value<$arr[$mid])
            return bin_search($arr,$low,$mid-1,$value);
        else
            return bin_search($arr,$mid+1,$high,$value);
    }

    }

    二分查找-非递归

    function bin_search($arr,$low,$high,$value) {

    while($low<=$high) {
        $mid=floor(($low+$high)/2);
        if($value==$arr[$mid])
            return $mid;
        elseif($value<$arr[$mid])
            $high=$mid-1;
        else
            $low=$mid+1;
    }
    return false;

    }

    快速排序

    function quick_sort($arr) {

    $n=count($arr);
    if($n<=1)
        return $arr;
    $key=$arr[0];
    $left_arr=array();
    $right_arr=array();
    for($i=1;$i<$n;$i++) {
        if($arr[$i]<=$key)
            $left_arr[]=$arr[$i];
        else
            $right_arr[]=$arr[$i];
    }
    $left_arr=quick_sort($left_arr);
    $right_arr=quick_sort($right_arr);
    return array_merge($left_arr,array($key),$right_arr);

    }

    选择排序

    function select_sort($arr) {

    $n=count($arr);
    for($i=0;$i<$n;$i++) {
        $k=$i;
        for($j=$i+1;$j<$n;$j++) {
           if($arr[$j]<$arr[$k])
               $k=$j;
        }
        if($k!=$i) {
            $temp=$arr[$i];
            $arr[$i]=$arr[$k];
            $arr[$k]=$temp;
        }
    }
    return $arr;

    }

    插入排序

    function insertSort($arr) {

    $n=count($arr);
    for($i=1;$i<$n;$i++) {
        $tmp=$arr[$i];
        $j=$i-1;
        while($arr[$j]>$tmp) {
            $arr[$j+1]=$arr[$j];
            $arr[$j]=$tmp;
            $j--;
            if($j<0)
                break;
        }
    }
    return $arr;

    }

  • 相关阅读:
    Python-22-并发编程
    hadoop学习记录(二)HDFS java api
    hadoop学习记录(一)HDFS
    hadoop学习记录(零)
    android 下载instagram动态中图片的demo
    android 使用<merge>标签
    利用dijkstra算法规划线路
    Android Studio如何引用外部Library工程
    设计模式(二):单例模式
    设计模式(一):设计模式入门
  • 原文地址:https://www.cnblogs.com/wxc1/p/11037475.html
Copyright © 2011-2022 走看看