ASP网页编程之javascript 的几种排序办法
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。排序|排序所谓排序,就是要收拾文件中的纪录,使之按关头字递增(或递加)序次分列起来。其切实界说以下:输出:n个纪录R1,R2,…,Rn,其响应的关头字分离为K1,K2,…,Kn。
输入:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。
这里,我们复杂先容几种排序办法,间接拔出排序、希儿排序、冒泡排序、疾速排序、间接选择排序,文中所说起的代码在IE6下测试经由过程。
间接拔出排序基础头脑
假定待排序的纪录寄存在数组R中。初始时,R自成1个有序区,无序区为R。从i=2起直至i=n为止,顺次将R拔出以后的有序区R中,天生含n个纪录的有序区。
算法形貌
functionInsertSort(arr){//拔出排序->间接拔出法排序
varst=newDate();
vartemp,j;
for(vari=1;i<arr.length;i++){
if((arr)<(arr)){
temp=arr;
j=i-1;
do{
arr=arr;
j--;
}
while(j>-1&&(temp)<(arr));
arr=temp;
}//endif
}
status=(newDate()-st)+ms;
returnarr;
}
希尔排序基础头脑
先取一个小于n的整数d1作为第一个增量,把文件的全体纪录分红d1个组。一切间隔为dl的倍数的纪录放在统一个组中。先在各组内举行间接插人排序;然后,取第二个增量d2<d1反复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即一切纪录放在统一组中举行间接拔出排序为止。
该办法本色上是一种分组拔出办法。
算法形貌
functionShellSort(arr){//拔出排序->希儿排序
varst=newDate();
varincrement=arr.length;
do{
increment=(increment/3|0)+1;
arr=ShellPass(arr,increment);
}
while(increment>1)
status=(newDate()-st)+ms;
returnarr;
}
functionShellPass(arr,d){//希儿排序分段实行函数
vartemp,j;
for(vari=d;i<arr.length;i++){
if((arr)<(arr)){
temp=arr;j=i-d;
do{
arr=arr;
j=j-d;
}
while(j>-1&&(temp)<(arr));
arr=temp;
}//endif
}
returnarr;
}
冒泡排序基础头脑
将被排序的纪录数组R垂直分列,每一个纪录R看做是分量为R.key的气泡。依据轻气泡不克不及在重气泡之下的准绳,从下往上扫描数组R:凡扫描到违背来源根基则的轻气泡,就使其向上"飘浮"。云云重复举行,直到最初任何两个气泡都是轻者在上,重者鄙人为止。
算法形貌
functionBubbleSort(arr){//互换排序->冒泡排序
varst=newDate();
vartemp;
varexchange;
for(vari=0;i<arr.length;i++){
exchange=false;
for(varj=arr.length-2;j>=i;j--){
if((arr)<(arr)){
temp=arr;
arr=arr;
arr=temp;
exchange=true;
}
}
if(!exchange)break;
}
status=(newDate()-st)+ms;
returnarr;
}
疾速排序基础头脑
将原成绩分化为多少个范围更小但布局与原成绩类似的子成绩。递回地解这些子成绩,然后将这些子成绩的解组合为原成绩的解。
在R中任选一个纪录作为基准(Pivot),以此基准将以后无序区分别为左、右两个较小的子区间R,并使右边子区间中一切纪录的关头字均小于即是基准纪录(无妨记为pivot)的关头字pivot.key,右侧的子区间中一切纪录的关头字均年夜于即是pivot.key,而基准纪录pivot则位于准确的地位(pivotpos)上,它不必列入后续的排序。
算法形貌
functionQuickSort(arr){//互换排序->疾速排序
if(arguments.length>1){
varlow=arguments;
varhigh=arguments;
}else{
varlow=0;
varhigh=arr.length-1;
}
if(low<high){
//functionPartition
vari=low;
varj=high;
varpivot=arr;
while(i<j){
while(i<j&&arr>=pivot)
j--;
if(i<j)
arr=arr;
while(i<j&&arr<=pivot)
i++;
if(i<j)
arr=arr;
}//endwhile
arr=pivot;
//endfunction
varpivotpos=i;//Partition(arr,low,high);
QuickSort(arr,low,pivotpos-1);
QuickSort(arr,pivotpos+1,high);
}else
return;
returnarr;
}
间接选择排序基础头脑
n个纪录的文件的间接选择排序可经由n-1趟间接选择排序失掉有序了局:
①初始形态:无序区为R,有序区为空。
②第1趟排序
在无序区R当选出关头字最小的纪录R,将它与无序区的第1个纪录R互换,使R和R分离变成纪录个数增添1个的新有序区和纪录个数削减1个的新无序区。
……
③第i趟排序
第i趟排序入手下手时,以后有序区和无序辨别别为R和R(1≤i≤n-1)。该趟排序从以后无序区当选出关头字最小的纪录R,将它与无序区的第1个纪录R互换,使R和R分离变成纪录个数增添1个的新有序区和纪录个数削减1个的新无序区。
如许,n个纪录的文件的间接选择排序可经由n-1趟间接选择排序失掉有序了局。
算法形貌
functionSelectSort(arr){//选择排序->间接选择排序
varst=newDate();
vartemp;
for(vari=0;i<arr.length;i++){
vark=i;
for(varj=i+1;j<arr.length;j++){
if((arr)<(arr))
k=j;
}
if(k!=i){
temp=arr;
arr=arr;
arr=temp;
}
}
status=(newDate()-st)+ms;
returnarr;
}
</p>对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了, 不能只是将它停留在纸上谈兵的程度上。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
页:
[1]