确定十大最大数字

时间:2016-10-16 10:33:12

标签: delphi

我有4个数据库。所有包含相同成员的成员都有不同的目标射击比赛分数。我想确定总体前10名的最高分。然后我将第一个数据库中的分数添加到数组中,然后将第二个数据库中成员的分数添加到数组中(添加分数)。等等到最后。那么如何获得10个最高分?我看过排序数组。我认为我的解决方案就在那里。

3 个答案:

答案 0 :(得分:5)

您的数据库引擎可以以最佳方式执行此操作 - 只需执行以下查询:

 SELECT name, score FROM membertable ORDER BY score DESC LIMIT 10

如果您已经获得了数组中的所有数据,请应用Quickselect算法以获得10个最佳值(无需完全排序)

答案 1 :(得分:0)

按比例对数组进行排序,然后返回前10个成员。如果可以,请在从数据库中选择时进行排序。

或者你可以在进行数组时保持10个最佳分数的数组,并将当前值与10个最佳分数进行比较..

答案 2 :(得分:0)

OK here is the code I used:

For I := 0 to iCount -2 do               //iCount is length of DB   
       for J := I+1 to iCount -1 do 
        if arrScore[I] < arrScore[J] then
       begin
         T := arrScore[I];
         K := arrMember[I];
         arrScore[I] := arrScore[J];// arrScore holds member's score
         arrMember[I] := arrMember[J];// arrMember holds member's name
         arrScore[J] := T;
         arrMember[J] := K;
       end;

And it works, thanks to all your answers.