java的各种算法Word文档格式.docx

上传人:b****4 文档编号:16723159 上传时间:2022-11-25 格式:DOCX 页数:48 大小:34.06KB
下载 相关 举报
java的各种算法Word文档格式.docx_第1页
第1页 / 共48页
java的各种算法Word文档格式.docx_第2页
第2页 / 共48页
java的各种算法Word文档格式.docx_第3页
第3页 / 共48页
java的各种算法Word文档格式.docx_第4页
第4页 / 共48页
java的各种算法Word文档格式.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

java的各种算法Word文档格式.docx

《java的各种算法Word文档格式.docx》由会员分享,可在线阅读,更多相关《java的各种算法Word文档格式.docx(48页珍藏版)》请在冰豆网上搜索。

java的各种算法Word文档格式.docx

a[i]>

keys){

a[i+1]=a[i];

i--;

a[i+1]=keys;

InsertSorti=newInsertSort();

int[]f={5,2,4,6,1,3,0};

i.sort(f);

System.out.println(Arrays.toString(f));

3MergeSort

publicclassMergeSortTest{

privateint[]l,r1;

publicvoidmerge(int[]a,intp,intq,intr){

intn1=q-p+1;

intn2=r-q;

l=newint[n1];

r1=newint[n2+1];

l[i]=a[p+i];

l[n1-1]=Integer.MAX_VALUE;

r1[i]=a[q+i];

r1[n2]=Integer.MAX_VALUE;

inti=0;

intj=0;

for(intk=p;

k

if(l[i]<

=r1[j]){

a[k]=l[i];

i=i+1;

}else{

a[k]=r1[j];

j=j+1;

publicvoidmergeSort(int[]a,intp,intr){

if(p+1

intq=(p+r)/2;

mergeSort(a,p,q);

mergeSort(a,q,r);

merge(a,p,q,r);

int[]a1={3,41,52,26,38,57,9,49};

MergeSortTestmst=newMergeSortTest();

mst.mergeSort(a1,0,a1.length);

System.out.println(Arrays.toString(a1));

4SelectionSort

5HeapSort

publicclassHeapSort{

privateintlargest;

publicintleft(inti){

return2*i+1;

publicintright(intj){

return2*j+2;

publicvoidmaxHeapify(int[]a,inti){

intl=left(i);

intr=right(i);

if((la[i])){

largest=l;

largest=i;

if((ra[largest])){

largest=r;

if(largest!

=i){

inttemp=a[i];

a[i]=a[largest];

a[largest]=temp;

maxHeapify(a,largest);

publicvoidbuildMaxHeap(int[]a){

for(inti=a.length/2;

i>

=0;

--i){

maxHeapify(a,i);

buildMaxHeap(a);

//System.out.println(Arrays.toString(a));

for(inti=a.length-1;

=1;

inttemp=a[0];

a[0]=a[i];

a[i]=temp;

int[]b=newint[i];

System.arraycopy(a,0,b,0,i-1);

maxHeapify(b,0);

System.arraycopy(b,0,a,0,i-1);

HeapSorths=newHeapSort();

int[]a={23,17,14,6,13,10,1,5,7};

hs.sort(a);

6BucketSort

publicclassBucketSort{

/**

*@paramargs

*/

privateLinkedList[]b;

publicvoidsort(double[]a){

intn=a.length;

b=newLinkedList[a.length];

b[(int)(n*a[i])]=newLinkedList();

b[(int)(n*a[i])].add(Double.valueOf(a[i]));

//System.out.println(b[(int)(n*a[i])]);

//System.out.println(Arrays.toString(b));

if(b[i]==null){

continue;

Collections.sort(b[i]);

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

double[]a={0.79,0.13,0.16,0.64,0.39,0.20,0.89,0.53,0.71,0.42};

BucketSortbs=newBucketSort();

if(bs.b[i]==null){

Iteratorit=bs.b[i].iterator();

while(it.hasNext()){

System.out.print(it.next()+"

"

);

//System.out.println(Arrays.toString(bs.b));

}

7CountingSort

publicclassCountingSort{

publicvoidSort(int[]a,int[]b,intk){

int[]c=newint[k+1];

for(intj=0;

c[a[j]]=c[a[j]]+1;

for(inti=1;

c[i]=c[i]+c[i-1];

b[c[a[j]]-1]=a[j];

c[a[j]]=c[a[j]]-1;

int[]a=newint[]{3,1,12,11,4,13};

CountingSortcs=newCountingSort();

int[]b=newint[a.length];

cs.Sort(a,b,13);

System.out.println(Arrays.toString(b));

1Fibonacci

Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:

若有一只兔子每个月生一只小兔子,一个月后小兔子也开始生产。

起初只有一只兔子,一个月后就有两只兔子,两个月后有三只兔子,三个月后有五只兔子(小兔子投入生产)……

这就是Fibonacci数列,一般习惯称之为费式数列,例如:

1,1,2,3,5,8,13,21,34,55,89,……

publicclassFibonacci{

publicstaticvoidmain(String[]args){

int[]fib=newint[20];

fib[0]=0;

fib[1]=1;

for(inti=2;

i<

fib.length;

i++)

fib[i]=fib[i-1]+fib[i-2];

for(inti=0;

System.out.print(fib[i]+"

System.out.println();

}

2巴斯卡(Pascal)

三角形基本上就是在解nCr,因为三角形上的每一个数字各对应一个nCr,其中n为row,而r为colnmu

importjava.awt.*;

importjavax.swing.*;

publicclassPascalextendsJFrame{

publicPascal(){

setBackground(Color.white);

setTitle("

巴斯卡三角形"

setSize(520,350);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

show();

privatelongcombi(intn,intr){

inti;

longp=1;

for(i=1;

=r;

p=p*(n-i+1)/i;

returnp;

publicvoidpaint(Graphicsg){

finalintN=12;

intn,r,t;

for(n=0;

n<

=N;

n++){

for(r=0;

r<

=n;

r++)

g.drawString("

+combi(n,r),

(N-n)*20+r*40,n*20+50);

publicstaticvoidmain(Stringargs[]){

Pascalfrm=newPascal();

3ThreeColorFlags

ThreeColorFlags问题最早由E.W.Dijkstra所提出,塔所使用的用语为DutchNationFlag(Dijkstra为荷兰人),而多数的作者则使用Three-ColorFlag来说明。

假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。

importjava.io.*;

publicclassThreeColorsFlags{

privatevoidswap(char[]flags,intx,inty){

chartemp;

temp=flags[x];

flags[x]=flags[y];

flags[y]=temp;

publicStringmove(char[]flags){

intwFlag=0;

intbFlag=0;

intrFlag=flags.length-1;

while(wFlag<

=rFlag){

if(flags[wFlag]=='

W'

){

wFlag++;

elseif(flags[wFlag]=='

B'

swap(flags,bFlag,wFlag);

bFlag++;

else{

rFlag&

flags[rFlag]=='

R'

rFlag--;

swap(flags,rFlag,wFlag);

returnnewString(flags);

publicstaticvoidmain(String[]args)

throwsIOException{

BufferedReaderbuf;

buf=newBufferedReader(

newInputStreamReader(System.in));

System.out.print("

输入三色旗顺序(ex.RWBBWRWR):

"

Stringflags=buf.readLine();

ThreeColorsFlagsthreeColorsFlag=newThreeColorsFlags();

flags=threeColorsFlag.move(

flags.toUpperCase().toCharArray());

System.out.println("

移动顺序后:

+flags);

4Mouse

Mouse走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离。

publicclassMouse{

privateintstartI,startJ;

//入口

privateintendI,endJ;

//出口

privatebooleansuccess=false;

int[][]maze={{2,2,2,2,2,2,2},

{2,0,0,0,0,0,2},

{2,0,2,0,2,0,2},

{2,0,0,2,0,2,2},

{2,2,0,2,0,2,2},

{2,2,2,2,2,2,2}};

显示迷宫:

maze.length;

i++){

for(intj=0;

j<

maze[0].length;

j++)

if(maze[j]==2)

█"

else

Mousemouse=newMouse();

mouse.setStart(1,1);

mouse.setEnd(5,5);

if(!

mouse.go(maze)){

\n没有找到出口!

\n找到出口!

j++){

elseif(maze[j]==1)

◇"

publicvoidsetStart(inti,intj){

this.startI=i;

this.startJ=j;

publicvoidsetEnd(inti,intj){

this.endI=i;

this.endJ=j;

publicbooleango(int[][]maze){

returnvisit(maze,startI,startJ);

privatebooleanvisit(int[][]maze,inti,intj){

maze[j]=1;

if(i==endI&

j==endJ)

success=true;

success&

maze[j+1]==0)

visit(maze,i,j+1);

maze[i+1][j]==0)

visit(maze,i+1,j);

maze[j-1]==0)

visit(maze,i,j-1);

maze[i-1][j]==0)

visit(maze,i-1,j);

success)

maze[j]=0;

returnsuccess;

5Knighttour

骑士游戏,在十八世纪倍受数学家与拼图迷的注意,骑士的走法为西洋棋的走发,骑士可以由任何一个位置出发,它要如何走完所有的位置。

publicclassKnight{

publicbooleantravel(intstartX,

intstartY,int[][]board){

//对应骑士可以走的八个方向

int[]ktmove1={-2,-1,1,2,2,1,-1,-2};

int[]ktmove2={1,2,2,1,-1,-2,-2,-1};

//下一个出路的位置int[]nexti=newint[board.length];

int[]nextj=newint[board.length];

//记录出路的个数

int[]exists=newint[board.length];

intx=startX;

inty=startY;

board[x][y]=1;

for(intm=2;

m<

=Math.pow(board.length,2);

m+

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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