给定一个二维数组:

    

<?php
$data = [
['name' =>'j1', 'score' => '80'],
['name' =>'j2', 'score' => '90'],
['name' =>'j3', 'score' => '50'],
['name' =>'j4', 'score' => '70'],
['name' =>'j5', 'score' => '95'],
['name' =>'j6', 'score' => '100'],
['name' =>'j7', 'score' => '60'],
['name' =>'j8', 'score' => '50'],
          ['name' =>'j9', 'score' => '80'],

];
?>

最后的结果为:

[
['name' => 'j6', 'score' => '100', 'deep' => 1],
['name' => 'j5', 'score' => '95', 'deep' => 2],
['name' => 'j2', 'score' => '90', 'deep' => 3],
['name' => 'j1', 'score' => '80', 'deep' => 4],
['name' => 'j9', 'score' => '80', 'deep' => 4],
['name' => 'j4', 'score' => '70', 'deep' => 5],
['name' => 'j7', 'score' => '60', 'deep' => 6],
['name' => 'j3', 'score' => '50', 'deep' => 7],
['name' => 'j8', 'score' => '50', 'deep' => 7]
]

要求所有关于排序的操作都不能使用php自带的系统函数,必须自己写排序算法(冒泡、插入、选择、快排.....),时间20分钟

2018年都过了27天了,总结下自己2017年的面试经历吧。这是上次面试遇到的编程问题,与大家分享自己的处理方法:

先排序用的是选择排序(其实面试那天用的是冒泡算法,当时做完没法拷贝,现在是我第一家公司做的某个项目写的,最后程序可能结果不对,但是我的思路就是先排序在排名,人比较懒,也不想再去写那个冒泡了,实际开发中我都是用的是php自带的系统函数处理的有一个很牛逼的排序函数uasort(),还支持callback,案列地址:http://www.jb51.net/article/71654.htm

        for($i=0;$i<count($barr)-1;$i++){
$minIndex = $i; //自己假定是最大的
for($j=$i+1;$j<count($barr);$j++){
if($barr[$minIndex]['num'] < $barr[$j]['num']){//如果这个值比最大的还大
$minIndex = $j;
}
}
if($minIndex != $i){
$temp = $barr[$minIndex];
$barr[$minIndex] = $barr[$i];
$barr[$i] = $temp;
} }

排名:原理就是循环数组,追加deep值,由于是按照从高到低的顺序排列的,那么第一个就是第一名,当相邻两个数字一样deep就不加否则就加+1

$p = 1;
foreach ($barr as $k => $v) {
if ($k==0) {
$barr[$k]'deep'] = 1;
} else {
if($barr[$k-1]['score']==$arr[$k]['score'])
$barr[$k]['deep']=$p;
}else{
$barr[$k]['deep']=++$p;
}
}

php面试题--并列排名问题的更多相关文章

  1. MySQL实现排名并查询指定用户排名功能,并列排名功能

    MySQL实现排名并查询指定用户排名功能,并列排名功能 表结构: CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, ui ...

  2. 100个裁判对n个选手做无并列排名问题探析

    原题:n 个选手(n ≥ 3)参加花样自行车比赛,100 个裁判独立对各选手的表现给出无并列排名.已知对任意三个选手 A.B.C 和任意三个裁判 X.Y.Z 均不会出现如下的情形:X 给出 A > ...

  3. sql 实现学生成绩并列排名算法

    SELECT uname, score , 排名=(SELECT COUNT(score) FROM FenShu WHERE Score > a.Score) + 1FROM FenShu a ...

  4. Mysql查询指定用户并列排名 类似rank函数

    SELECT total.* FROM ( SELECT obj.uid, obj.score, CASE WHEN @rowtotal = obj.score THEN @rownum WHEN @ ...

  5. [BZOJ1056][BZOJ1862][HAOI2008][Zjoi2006]排名系统

    [BZOJ1056][BZOJ1862][HAOI2008][Zjoi2006]排名系统 试题描述 排名系统通常要应付三种请求:上传一条新的得分记录.查询某个玩家的当前排名以及返回某个区段内的排名记录 ...

  6. 2014年QS世界大学排名

    新浪教育[微博]讯 近日2014QS世界大学排行榜发布,榜单前十强均为英美名校.其中麻省理工大学以绝对优势位居榜首:英国剑桥大学及帝国理工学院并列排名第二:哈佛大学较去年而言名次略微下降,跌至第四. ...

  7. Oracle rank和dense_rank排名函数

    1.rank函数 rank计算一组值的排名,返回数字类型.排名可能是不连续.如果有5人,其中有2个人排名第一,则rank返回的排名结果为:1 1 3 4 5. 作为一个聚合函数,返回虚拟行在样表中的排 ...

  8. 在MySQL中实现Rank高级排名函数【转】

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  9. MySQL 排名、分组后组内排名、取各组的前几名 及排名后更新插入数据表中

    一.排名 /*普通排名:从1开始,顺序往下排*/ AS rank ) r ORDER BY score; /*并列排名:相同的值是相同的排名*/ SELECT cs.* , CASE WHEN @p= ...

随机推荐

  1. JAVA字符串的处理

    问题描述: 从键盘数入若干文字,最后输入的一行"end"代表结束标记. 统计该段文字中英文字母的个数 将其中的所有单词the全部改为a,输出结果 将该段文字所有的数字串找出来输出 ...

  2. oracl遇到的问题

    使用oracl数据库用  ALTER TABLE Students ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (sname) 添加唯一性约束,出现问题,报错为:a ...

  3. HTML基本入门完成

    四. (一)丶下拉框select元素:一般可以创建单选或多选菜单.<select>与<option>一般同时使用,select代表下拉框,option代表他的每一项. 1.基本 ...

  4. Java框架spring 学习笔记(十九):事务管理(注解管理)

    注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 <?xml version="1.0" encoding="UTF-8"?> ...

  5. React中this.props的主要属性

    this.props主要包含:history属性.location属性.match属性 ①history属性又包含 ②location属性又包含 ③match属性又包含

  6. Food Delivery ZOJ - 3469(区间dp)

    题目传送门 题目翻译:当我们专注于解决问题时,我们通常宁愿呆在电脑前而不是外出吃午饭.在这个时候,我们可能会要求提供食物. 假设有N个人生活在一条直线的街道上,它只是位于X坐标轴上.第i个人的坐标是X ...

  7. 安装centos 6.7&7.4

    1.安装centos 6.7 1) 2)检查软件有无故障.没有必要检查.选择skip,跳过 3) 4) 5) 6)选择存储设备,第一个为基本存储设备,比如ssd,scsi等常见笔记本.电脑,服务器都选 ...

  8. WPF打印京东电子面单(可以异步)

    参考:https://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html 模板:JDFlowDocument.xaml <FlowD ...

  9. c#devexpress 窗体控件dock的重要

    在设计c# devexpress winform 窗体时, 要建立起dock意识, dock就是子窗体如何靠在父窗体上, 有fill 全覆盖, buttom 底部,top 上部... 如下图 pane ...

  10. Program Hyundai i20 Smart Key with VVDI & Xtool X100 Pad2

    How-to: generate and program Hyundai i20 smart key with VVDI Mini Key Tool and XTOOL X100 PAD2. Step ...