一、 排序算法 1
1 选择算法 选择排序是一种简单而有效的排序算法,在问题规模不是很大的情况下就大胆的使用这个算法吧
算法主过程如下: PROCEDURE selectsort; VAR i,j,k,temp:integer; BEGIN FOR i:=1 to n-1 DO BEGIN k:=i; FOR j:=i+1 to n DO IF a[k]>a[j] THEN k:=j; IF ki THEN BEGIN temp:=a[k]; a[k]:=a[i]; a[i]:=temp; END; END; END; 1
2 快速排序 • 快速排序是基于分治排序算法,在数据规模很大的情况下一般使用该算法
算法主过程如下: procedure qsort(L,R:longint); var i,j,mid,temp:longint; begin i:=L; j:=R; mid:=a[L+random(R-L+1)]; {随机选择一个数组中的数作为对比数} repeat while a[i]< mid do inc(i); {在左半部分寻找比中间数大的数} while mid< a[j] do dec(j); {在右半部分寻找比中间数小的数} if i< =j then {若找到一组与排序目标不一致的数对则交换它们} begin temp:=a[i]; a[i]):=a[j]; a[j]:=temp; inc(i);dec(j); {继续找} end; until i >j; if L< j then qsort(L,j); {若未到两个数的边界,则递归搜索左右区间} if i< R then qsort(i,R); end; 注意:主程序中必须加randomize 语句
二、 高精度算法 1
2 存储方法 由于待处理的数据超过了任何一种数据类型所能容纳的范围,因此必须