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).
<?php
?>
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:
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).
Gunakan fungsi pengisihan tatasusunan PHP sendiri?
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