idealguy idealguy
关注数: 7 粉丝数: 98 发帖数: 1,808 关注贴吧数: 14
一个优化的题目编程 题目如下:兔子小白是位数学爱好者,有一次它参加了兔界里的数学比赛,成绩公布后,小白很想知道自己的成绩到底排第几,现在请你帮它编一个程序,要求输入一个成绩,就能知道相应的名次。注意:同分的按相同名次算,且只算一次。 (百度知道) 网友提供了程序(略)。本人认为不够优化,给出优化后的程序。 该程序采用了以下方案: 1) 采用插入排序法对成绩表进行排序,去除重复项;采用对分搜索确定插入位置,效率高; 2) 可多次进行查询,查询采用对分搜索,效率高。被查询值可以是不在成绩表中的数值。 var Sco:array[1..1000] of longint; N,Ns:integer; Function Bfind(j1,j2:Integer; A:Longint):Integer; {Binary search method} var j:Integer; begin repeat j:=(j1+j2) div 2; if A=Sco[j] then begin Bfind:=-j; exit; end; if A>Sco[j] then j2:=j-1 else j1:=j+1; until j1>j2; Bfind:=j1; end; procedure Sorting; {Insert sorting Method} var i,j,j2:integer; A:LongInt; begin Ns:=1; for i:=2 to N do begin A:=Sco[i]; j2:=Bfind(1,Ns,A); if j2>0 then begin for j:= Ns downto j2 do Sco[j+1]:=Sco[j]; Inc(Ns); Sco[j2]:=A; end; end; end; var i,Sq:Integer; begin { Read all Sco from keyboard } Write('The Number of students:'); readln(N); Writeln('Please enter all Sco:'); for i:=1 to N do read(Sco[i]); readln; {Sorts all Sco} Sorting; {Inquiring} Repeat Write('The inquired score: (-1=Exit) '); readln(Sq); if Sq<0 then exit; writeln('Your sequence is:', abs(Bfind(1,Ns,Sq))); until false; end.
嘉定违章高发点 (根据百度地图相关数据整理) 嘉定违章高发点: 次数 类型 代码 地点 ------------------------------------------------------------ 37548 超速,嘉定私装 城北路胜竹路北约740米 3840 超速20% 16361 宝钱公路南侧(沪宜公路和G15之间)5.3km处 3535 超速20% 16361 宝钱公路北侧(沪宜公路和G15之间)5.3km处 1330 超速20% 16361 宝钱公路北侧(近城北路)9.5km处 1310 超速20% 16361 宝钱公路南侧(近城北路)9.5km处 7175 违反禁令标志 13440 东大街博乐路东约15米 5802 违反禁令标志 13440 北大街福宁弄北约10米 349 违反禁令标志 13440 沪嘉高速西侧丰翔路进S5上匝道 1604 违反交通信号灯 1302 沪宜公路清河路 1032 违反交通信号灯 1302 刘翔公路嘉旺路 784 违反交通信号灯 1302 城中路20号(上海大学) 340 不走导向车道 西大街(大鸿路至诚信路) 违章停放500次以上 次数 地点 ------------------------------- 3915 张马路城中路东约5米 3755 胜辛路福海路北约130米 2326 塔城路梅园路东约30米 2312 金沙路仓场路西约40米 1982 胜辛路双丁路南约20米 1968 永盛路福海路北约100米 1895 永靖路平城路南约20米 1488 迎园路墅沟路南约20米 1437 和政路仓场路南约100米 1410 永靖路棋盘路南约10米 1302 仓场路新城路西约60米 1228 南大街塔城路西约20米 1067 博乐路中医院 974 迎园路仓场路南约10米 851 嘉戬公路迎园路北西约100米 850 塔城路和政路北约6米 792 陈家山路红石路西约50米 707 察院弄国家电网门口 671 博乐路启良路北约10米 594 红石路胜竹路南约50米 562 嘉戬公路博乐南路东约55米 559 城中街察院弄西约20米 546 裕民路 512 张马路南大街西约3米 512 张马路南大街西约3米
首页 1 2 下一页