用Java实现几种常见的排序算法Word文件下载.docx

上传人:b****1 文档编号:3627834 上传时间:2023-05-02 格式:DOCX 页数:13 大小:16.49KB
下载 相关 举报
用Java实现几种常见的排序算法Word文件下载.docx_第1页
第1页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第2页
第2页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第3页
第3页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第4页
第4页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第5页
第5页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第6页
第6页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第7页
第7页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第8页
第8页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第9页
第9页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第10页
第10页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第11页
第11页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第12页
第12页 / 共13页
用Java实现几种常见的排序算法Word文件下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用Java实现几种常见的排序算法Word文件下载.docx

《用Java实现几种常见的排序算法Word文件下载.docx》由会员分享,可在线阅读,更多相关《用Java实现几种常见的排序算法Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。

用Java实现几种常见的排序算法Word文件下载.docx

data.length;

i++){

for(intj=i;

(j>

0)&

&

(data[j]<

data[j-1]);

j--){

SortUtil.swap(data,j,j-1);

}

}

冒泡排序:

publicclassBubbleSortimplementsSortUtil.Sort{

for(inti=0;

for(intj=data.length-1;

j>

i;

if(data[j]<

data[j-1]){

选择排序:

publicclassSelectionSortimplementsSortUtil.Sort{

/*

*(non-Javadoc)

for(inti=0;

i<

data.length;

i++){

intlowIndex=i;

for(intj=data.length-1;

j>

i;

j--){

if(data[j]<

data[lowIndex]){

lowIndex=j;

SortUtil.swap(data,i,lowIndex);

Shell排序:

publicclassShellSortimplementsSortUtil.Sort{

for(inti=data.length/2;

i>

2;

i/=2){

for(intj=0;

j<

j++){

insertSort(data,j,i);

insertSort(data,0,1);

/**

*@paramdata

*@paramj

*@parami

privatevoidinsertSort(int[]data,intstart,intinc){

for(inti=start+inc;

i+=inc){

=inc)&

data[j-inc]);

j-=inc){

SortUtil.swap(data,j,j-inc);

快速排序:

publicclassQuickSortimplementsSortUtil.Sort{

quickSort(data,0,data.length-1);

privatevoidquickSort(int[]data,inti,intj){

intpivotIndex=(i+j)/2;

//swap

SortUtil.swap(data,pivotIndex,j);

intk=partition(data,i-1,j,data[j]);

SortUtil.swap(data,k,j);

if((k-i)>

1)quickSort(data,i,k-1);

if((j-k)>

1)quickSort(data,k+1,j);

*@return

privateintpartition(int[]data,intl,intr,intpivot){

do{

while(data[++l]<

pivot);

while((r!

=0)&

data[--r]>

SortUtil.swap(data,l,r);

while(l<

r);

returnl;

改进后的快速排序:

publicclassImprovedQuickSortimplementsSortUtil.Sort{

privatestaticintMAX_STACK_SIZE=4096;

privatestaticintTHRESHOLD=10;

int[]stack=newint[MAX_STACK_SIZE];

inttop=-1;

intpivot;

intpivotIndex,l,r;

stack[++top]=0;

stack[++top]=data.length-1;

while(top>

0){

intj=stack[top--];

inti=stack[top--];

pivotIndex=(i+j)/2;

pivot=data[pivotIndex];

//partition

l=i-1;

r=j;

(data[--r]>

pivot));

SortUtil.swap(data,l,j);

if((l-i)>

THRESHOLD){

stack[++top]=i;

stack[++top]=l-1;

if((j-l)>

stack[++top]=l+1;

stack[++top]=j;

//newInsertSort().sort(data);

insertSort(data);

privatevoidinsertSort(int[]data){

归并排序:

publicclassMergeSortimplementsSortUtil.Sort{

int[]temp=newint[data.length];

mergeSort(data,temp,0,data.length-1);

privatevoidmergeSort(int[]data,int[]temp,intl,intr){

intmid=(l+r)/2;

if(l==r)return;

mergeSort(data,temp,l,mid);

mergeSort(data,temp,mid+1,r);

for(inti=l;

=r;

temp[i]=data[i];

inti1=l;

inti2=mid+1;

for(intcur=l;

cur<

cur++){

if(i1==mid+1)

data[cur]=temp[i2++];

elseif(i2>

r)

data[cur]=temp[i1++];

elseif(temp[i1]<

temp[i2])

else

改进后的归并排序:

publicclassImprovedMergeSortimplementsSortUtil.Sort{

privatestaticfinalintTHRESHOLD=10;

privatevoidmergeSort(int[]data,int[]temp,intl,intr){

inti,j,k;

intmid=(l+r)/2;

if(l==r)

return;

if((mid-l)>

=THRESHOLD)

mergeSort(data,temp,l,mid);

insertSort(data,l,mid-l+1);

if((r-mid)>

THRESHOLD)

mergeSort(data,temp,mid+1,r);

insertSort(data,mid+1,r-mid);

for(i=l;

=mid;

temp[i]=data[i];

for(j=1;

j<

=r-mid;

j++){

temp[r-j+1]=data[j+mid];

inta=temp[l];

intb=temp[r];

for(i=l,j=r,k=l;

k<

=r;

k++){

if(a<

b){

data[k]=temp[i++];

a=temp[i];

}else{

data[k]=temp[j--];

b=temp[j];

*@paraml

privatevoidinsertSort(int[]data,intstart,intlen){

for(inti=start+1;

start+len;

start)&

data[j]<

data[j-1];

堆排序:

publicclassHeapSortimplementsSortUtil.Sort{

MaxHeaph=newMaxHeap();

h.init(data);

i++)

h.remove();

System.arraycopy(h.queue,1,data,0,data.length);

privatestaticclassMaxHeap{ 

voidinit(int[]data){

this.queue=newint[data.length+1];

queue[++size]=data[i];

fixUp(size);

privateintsize=0;

privateint[]queue;

publicintget(){

returnqueue[1];

publicvoidremove(){

SortUtil.swap(queue,1,size--);

fixDown

(1);

//fixdown

privatevoidfixDown(intk){

intj;

while((j=k<

<

1)<

=size){

if(j<

size&

queue[j]<

queue

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2