zoukankan      html  css  js  c++  java
  • 选择排序

    原理:

    首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 
    再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 
    重复第二步,直到所有元素均排序完毕。 

    思路:

    通过 n - i 次关键字间的比较,从 n - i + 1 个记录中选出关键字最小的记录,并和第 i (1 <= i <= n) 个记录交换,执行n-1趟 后就完成了记录序列的排序。

    代码:<?php 

    $arr=array(50,2,45,12,46,47,23,40,15,60,39,67,80,34); 
      //调用排序方法 
    echo "<pre>"; 
    print_r(select_sort($arr));


    function select_sort($arr) {
    //实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
    //$i 当前最小值的位置, 需要参与比较的元素
    for($i=0, $len=count($arr); $i<$len-1; $i++){

    //先假设最小的值的位置

    $p = $i;

    //$j 当前都需要和哪些元素比较,$i 后边的。

    for($j=$i+1; $j<$len; $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; 

     输出: 

    Array
    (
        [0] => 2
        [1] => 12
        [2] => 15
        [3] => 23
        [4] => 34
        [5] => 39
        [6] => 40
        [7] => 45
        [8] => 46
        [9] => 47
        [10] => 50
        [11] => 60
        [12] => 67
        [13] => 80
    )
    

      

      

  • 相关阅读:
    boke
    Http post/get
    记一次网站优化---图片压缩与移动端画面缩放问题
    深入浅出 Vue.js 第九章 解析器---学习笔记
    Linux/Mac中alias的使用
    JavaScript中的函数柯里化与反柯里化
    JavaScript中深拷贝实现
    JavaScript中的节流和防抖
    博客园加入百度统计遇到的坑
    记一次无数据库下动态更新文案的解决历程
  • 原文地址:https://www.cnblogs.com/1500418882qqcom/p/10539145.html
Copyright © 2011-2022 走看看