回 帖 发 新 帖 刷新版面

主题:[原创]常用算法(代码)--陆续增加中

这些几乎都是我平时根据一些书上的算法描述写出来的.
如果有错误的地方,请大家及时提出,以便我及时更改,谢谢!

冒泡排序:
for i:=1 to (n-1) do
  for j:=n downto (i+1) do
    if a[j]<a[j-1] then  //这是从大到小排列,如果是从小到大排列,则应是a[j]>a[j-1]
    begin
      k:=a[j-1];
      a[j-1]:=a[j];
      a[j]:=k;
    end;

回复列表 (共40个回复)

11 楼

拓普排序:
<type>
stucktype=record
  data:array[1..255] of byte;
  top:byte;
end;

<main>
procedure topsort(g:graphtype{矩阵}; var s:stucktype);
var
  b:boolean;
  i,y:integer;
begin
  b:=false;
  for i:=1 to n do
    if (tryindegree(g,i){计算节点入度}=0) and (not (i in delnode{记录被删除的节点})) then
    begin
      push(s,i);
      b:=true;
    end;
  while s.top>0 do
  begin
    y:=pop(s);
    write(y,' ');
    for i:=1 to n do g[y,i]:=0;
    delnode:=delnode+[y];
  end;
  if b then topsort(g,s);
end;

12 楼

还有:
排序 快速排序、堆排序(优点是最坏情况依然是O(nlogn))
数学 高精度数加减乘法
查找 二分查找,Hash表
图论 Kruskal、Dijkstra

可惜我是用C/C++的,pascal写不来诶~楼主就来补充吧~.~

13 楼

这个是会陆续补充的,不过我是高二学生,时间不是特别多,可能会帖得比较慢.

14 楼

好!楼主厉害!楼主加油!
我还想要动态规划!谢谢!

15 楼

动态规划不能用固定的代码描述出来!
这和贪心法一样,要因题而异,具体的策略只能依据你平时做题的经验而定!

16 楼

筛法求素数:
<init>
a[1]:=0;
for i:=2 to n do a[i]:=i;
i:=2;

<main>
while i<=n do
begin
  k:=i;
  while k<=n do  {将所有a[i]的倍数清0}
  begin
    k:=k+i;
    a[k]:=0;
  end;
  i:=i+1;
  while (a[i]=0) and (i<n) do i:=i+1;  {查找接下来的第一个非0数}
end;
{数组a中不为0的数就是素数}

17 楼

动态规划只有一个比较通用的代码框架,实际上动规的使用是非常灵活的

18 楼

今天得知我进入复赛了,高兴啊!!!
希望我帖的这些东西能给大家参加复赛带来一些帮助!

19 楼

二分查找:
function search(a:arraytype; x{目标},head,tail:integer):integer;
var
  ans,mid:integer;
begin
  ans:=0;
  while head<=tail do
  begin
    mid:=(head+tail) div 2;
    if x=a[mid] then
    begin
      ans:=mid;
      break;
    end
    else
    begin
      if x<a[mid] then tail:=mid-1;
      if x>a[mid] then head:=mid+1;
    end;
  end;
  search:=ans;
end;

20 楼

真的好棒啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册