ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:21.69KB ,
资源ID:21773124      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21773124.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java排序算法大全Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java排序算法大全Word文件下载.docx

1、arrayfrom=arrayto;arrayto=tmp;一 插入排序该算法在数据规模小的时候十分高效,该算法每次插入第K+1到前K个有序数组中一个合适位置,K从0开始到N-1,从而完成排序:/*authoryovn*/InsertSorter/*(non-Javadoc)seealgorithms.Sorter#sort(E,int,int)array,intfrom,len)tmp=null;for(inti=from+1;ifrom;j-)if(pareTo(arrayj-1)0)arrayj=arrayj-1;elsebreak;arrayj=tmp;二 冒泡排序这可能是最简单的排序

2、算法了,算法思想是每次从数组末端开始比较相邻两元素,把第i小的冒泡到数组的第i个位置。i从0一直到N-1从而完成排序。(当然也可以从数组开始端开始比较相邻两元素,把第i大的冒泡到数组的第N-i个位置。)*BubbleSorterprivatestaticbooleanDWON=true;bubble_down(Elen)i=from;j=from+len-1;i;if(array pareTo(array j-1)=from;i-)j=from;jswap(array,j,j+1);Overrideif(DWON)bubble_down(array,from,len);elsebubble_u

3、p(array,from,len);三 选择排序选择排序相对于冒泡来说,它不是每次发现逆序都交换,而是在找到全局第i小的时候记下该元素位置,最后跟第i个元素交换,从而保证数组最终的有序。相对与插入排序来说,选择排序每次选出的都是全局第i小的,不会调整前i个元素了。SelectSorteri=0;len;smallest=i;j=i+from;if(pareTo(arraysmallest)smallest=j;swap(array,i,smallest); 四 Shell排序Shell排序可以理解为插入排序的变种,它充分利用了插入排序的两个特点:1)当数据规模小的时候非常高效2)当给定数据已经

4、有序时的时间代价为O(N)所以,Shell排序每次把数据分成若个小块,来使用插入排序,而且之后在这若个小块排好序的情况下把它们合成大一点的小块,继续使用插入排序,不停的合并小块,知道最后成一个块,并使用插入排序。这里每次分成若干小块是通过“增量” 来控制的,开始时增量交大,接近N/2,从而使得分割出来接近N/2个小块,逐渐的减小“增量“最终到减小到1。一直较好的增量序列是2k-1,2(k-1)-1,.7,3,1,这样可使Shell排序时间复杂度达到O(N1.5)所以我在实现Shell排序的时候采用该增量序列ShellSorterOurdeltavaluechoose2k-1,2(k-1)-1,

5、.7,3,plexityisO(n1.5)/1.calculatethefirstvalue;value=1;while(value+1)*2=1;delta=(delta+1)/2-1)delta;modify_insert_sort(array,from+i,len-i,delta);modify_insert_sort(Elen,intdelta)if(len=1)return;i=from+delta;i+=delta)j-=delta)if(pareTo(arrayj-delta)arrayj=arrayj-delta;五 快速排序快速排序是目前使用可能最广泛的排序算法了。一般分如下

6、步骤:1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法)2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。快速排序的核心在于分割算法,也可以说是最有技巧的部分。QuickSorterq_sort(array,from,from+len-1);q_sort(Eto)if(to-from1)return;pivot=selectPivot(array,from,to);pivot=partion(ar

7、ray,from,to,pivot);q_sort(array,from,pivot-1);q_sort(array,pivot+1,to);partion(Eto,pivot)tmp=arraypivot;arraypivot=arrayto;/nowtospositionavailablewhile(from!=to)while(fromto&pareTo(tmp)=0)from+;if(from=0)to-;availablenowfrom+;arrayfrom=tmp;returnselectPivot(E(from+to)/2;六 归并排序算法思想是每次把待排序列分成两部分,分别对这

8、两部分递归地用归并排序,完成后把这两个子部分合并成一个序列。归并排序借助一个全局性临时数组来方便对子序列的归并,该算法核心在于归并。importjava.lang.reflect.Array;MergeSorterSuppressWarnings(uncheckedEtemporary=(E)Array.newInstance(array0.getClass(),len);merge_sort(array,from,from+len-1,temporary);merge_sort(Etemporary)if(to=from)return;middle=(from+to)/2;merge_sor

9、t(array,from,middle,temporary);merge_sort(array,middle+1,to,temporary);merge(array,from,to,middle,temporary);merge(Emiddle,k=0,leftIndex=0,rightIndex=to-from;System.arraycopy(array,temporary,0,middle-from+1);to-middle;temporaryto-from-i=arraymiddle+i+1;while(kto-from+1)if(temporaryleftIpareTo(tempor

10、aryrightIndex)arrayk+from=temporaryleftIndex+;arrayk+from=temporaryrightIndex-;k+;七 堆排序堆是一种完全二叉树,一般使用数组来实现。堆主要有两种核心操作,1)从指定节点向上调整(shiftUp)2)从指定节点向下调整(shiftDown)建堆,以及删除堆定节点使用shiftDwon,而在插入节点时一般结合两种操作一起使用。堆排序借助最大值堆来实现,第i次从堆顶移除最大值放到数组的倒数第i个位置,然后shiftDown到倒数第i+1个位置,一共执行N此调整,即完成排序。显然,堆排序也是一种选择性的排序,每次选择第i

11、大的元素。HeapSorterbuild_heap(array,from,len);/swapmaxto(len-i)-thpositionswap(array,from,from+len-1-i);shift_down(array,from,len-1-i,0);/alwaysshiftDownprivate final voidbuild_heap(Epos=(len-1)/2;/westart(len-1)/2,becausebranchnode+1=leafnode,andallleafalreadyaheapi=pos;=0;shift_down(array,from,len,i);shift_down(Elen,pos)tmp=arrayfrom+pos;index=pos*2+1;/useleftchildwhile(indexlen)/untilnoif(index+1len&arrayfrom+pareTo(arrayfrom+index+1)0)/rightchildbiggerindex+=1;/switchrightif(pareTo(arrayfrom+index)arrayfrom+pos=arrayfrom+index;pos=index;els

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1