Algoritma - Bagaimana untuk melaksanakan kedudukan skor menggunakan PHP, sebarang idea yang bagus?
世界只因有你
世界只因有你 2017-05-16 13:16:24
0
5
1179

Buat penarafan markah pelajar

世界只因有你
世界只因有你

membalas semua(5)
过去多啦不再A梦

<?php

$arr = [99,100,100];
$arr1=$arr;
rsort($arr1);
$c=[];
 foreach ( $arr as $v){
     $b= array_search($v, $arr1);
     $c[]=$b+1;
 }
 print_r($c);

?>

Ini boleh memenuhi keperluan anda, tetapi saya mempunyai soalan yang kedua-duanya terikat untuk tempat pertama.

左手右手慢动作

Apa yang dikehendaki oleh penyoal ialah memaparkan kedudukan mengikut susunan susunan asal (boleh diikat). Idea umum adalah untuk menambah tatasusunan asal dengan maklumat kedudukan, dan kemudian membina tatasusunan kedudukan secara terbalik berdasarkan hasil yang disusun. Agak panjang untuk menulis:

get_ranks(a[1:n])
  s ← array(n)
  ranks ← array(n)
  for i from 1 to n                 ▷ s[i] has record type
    s[i] ← {position: i, value: a[i], rank: 0}
  descending_sort(s by value)       ▷ sort by s[i].value
  s[1].rank ← 1
  for i from 2 to n
    if s[i].value < s[i-1].value    ▷ dense rank
      s[i].rank ← s[i-1].rank + 1
    else
      s[i].rank ← s[i-1].rank
  for i from 1 to n                 ▷ construct result
    ranks[s[i].position] ← s[i].rank
  return ranks[]
  

Perhatikan bahawa jika terdapat berbilang orang ke-1 terikat untuk tempat ke-n, orang seterusnya akan menjadi orang ke-1, yang agak berbeza daripada contoh yang diberikan oleh penyoal. Kesesakan kerumitan keseluruhan algoritma adalah pengisihan, iaitu O(n lgn).

Ty80

Gunakan fungsi pengisihan tatasusunan PHP sendiri?

phpcn_u1582

http://www.php.net/manual/zh/...
Isih data terbina dalam sepatutnya dapat menyelesaikan masalah anda

我想大声告诉你

Isih dahulu tatasusunan ini mengikut skor, kemudian masukkan semula tatasusunan ini. Kemudian baru dapatkan kunci mengikut markah.

Selain itu: markah anda tidak ditulis dalam pangkalan data, jadi ia dikeluarkan mengikut urutan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan