选择排序【工作见解】

  1. 工作中遇到排序需求,不能数据库排,我就代码排序了。
        $startTime = microtime(true);
        $len = count($list);
        for ($i=0;$i<$len-1;$i++){//选择排序,时间复杂度O(n^2)
            $maxIndex = $i;//最大下标
            for ($j=$i+1;$j<$len;$j++){//循环未排定部分
                if ($list[$j]->todayFriendSum > $list[$maxIndex]->todayFriendSum){//如果大于改字段
                    $maxIndex = $j;
                }
            }
            list($list[$maxIndex],$list[$i]) = array($list[$i],$list[$maxIndex]);
        }
        $endTime = microtime(true);
        dump($startTime);
        dump($endTime);
        dump(bcsub($endTime,$startTime,7));

其实很简单,就是嵌套循环两次。拿排过的最后一位元素,和没排过所有元素进行对比,如果最大就替换位置。就是所谓交换变量。

go里面很方便交换变量 a,b = b,c;

php里面也有不用第三方临时变量方式交换变量。

list(a,b) = array(b,a);

list()不是一个函数,是一个语言结构。作用是批量赋值。

我以我目前的见解,就是这个排序虽然不是最优解,但是还不错,挺简单。每次循环的次数 都是逐渐-1的。

原创文章,作者:星辰,如若转载,请注明出处:http://www.z88j.com/106.html

(16)
打赏 微信扫一扫 微信扫一扫
上一篇 2020年12月9日 上午12:48
下一篇 2020年12月11日 下午4:33

相关推荐

  • 877. 石子游戏php解法

    亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流…

    算法 2021年6月16日
    98100
  • php链表中倒数第k个节点 解法

    刷力扣算法日常 题目: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,…

    php 2020年12月2日
    1.7K00
  • 经典的选择排序 C++版O(n^2)

    这么简单的算法之前写过思路,这次是复习一遍。如果看思路:https://www.z88j.com/106.html (这个是php版本的 不过算法和语言没多大关系)值得注意的是 c…

    算法 2021年6月8日
    1.3K00
  • 顺序查找算法【工作见解】

    星辰工作中遇到要查找数组数据取出 工作场景:有两个数组一个是 [[“时间”,”今天时间数据”],[“时间”,”今天时间数据”],…] 另一个是 [[“时间”,”昨天时间数据”]…

    php 2020年12月11日
    1.9K00
  • 203. 移除链表元素php解法

    给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。(力扣的题 编号203哈) 示例 1: …

    php 2021年6月17日
    1.5K00
  • 两个数组的交集 解法

    给定两个数组,编写一个函数来计算它们的交集。   示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 =…

    快速排序 2021年6月8日
    95500

发表回复

登录后才能评论

评论列表(1条)

  • 经典的选择排序 C++版O(n^2) | 星辰博客

    […] 这么简单的算法之前写过思路,这次是复习一遍。如果看思路:https://www.z88j.com/106.html (这个是php版本的 不过算法和语言没多大关系)值得注意的是 c++ swap 实际性能并没有 普通的变量交换性能高。好像是因为泛型 要进行类型判断。c++选择排序代码: […]


Warning: error_log(/www/wwwroot/www.z88j.com/wp-content/plugins/spider-analyser/#log/log-2820.txt): failed to open stream: No such file or directory in /www/wwwroot/www.z88j.com/wp-content/plugins/spider-analyser/spider.class.php on line 2900