Java必知经典算法小程序.docx

上传人:b****6 文档编号:6228737 上传时间:2023-01-04 格式:DOCX 页数:14 大小:31.31KB
下载 相关 举报
Java必知经典算法小程序.docx_第1页
第1页 / 共14页
Java必知经典算法小程序.docx_第2页
第2页 / 共14页
Java必知经典算法小程序.docx_第3页
第3页 / 共14页
Java必知经典算法小程序.docx_第4页
第4页 / 共14页
Java必知经典算法小程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Java必知经典算法小程序.docx

《Java必知经典算法小程序.docx》由会员分享,可在线阅读,更多相关《Java必知经典算法小程序.docx(14页珍藏版)》请在冰豆网上搜索。

Java必知经典算法小程序.docx

Java必知经典算法小程序

、Java必知经典算法小程序

【程序29】*作者若水飞天*按程序分析,好像只是求主对角线的和题目:

求一个3*3矩阵对角线元素之和1.程序分析:

利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

**/package.flywater.FiftyAlgorthm;importjava.util.Scanner;

publicclassTwenty_ninthCrossSum{

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

int[][]a=newint[3][3];for(inti=0;i<3;i++){

for(intj=0;j<3;j++){a[i][j]=s.nextInt();}}

System.out.println("输入的3*3矩阵是:

");

for(inti=0;i<3;i++){for(intj=0;j<3;j++){System.out.print(a[i][j]+"");}System.out.println();}

intsum=0;for(inti=0;i<3;i++){for(intj=0;j<3;j++){if(i==j){sum+=a[i][j];}}}

System.out.println("对角线和是"+sum);}}/*

【程序30】*作者若水飞天题目:

有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入数组中。

1.程序分析:

首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

**/package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

publicclassThirtiethInsert{

publicstaticvoidmain(String[]args){int[]a=newint[]{1,2,3,4,5,6,7};

int[]b=newint[a.length+1];intt1=0,t2=0;inti=0;Scanners=newScanner(System.in);intnum=s.nextInt();/**定义两个数组a,b,一个a的长度比另一个b大1,a看做是*已经排好序的。

*接下来的过程是*1:

如果num比最后一个数大,把num赋值给数组b的最后一个数*再按顺序把a的每个元素赋给b*2:

否则(num不比a的最后一个数大),*如果a的元素比num小,则将这些元素按顺序赋给b*将num赋给比num大的b数组的元素,*跳出第一个for循环。

*3:

定义一个循环控制变量,从num传给数组后num的下标值加一开始;*直到b的结尾,将剩下的a的值赋给b,赋值的过程是b[j]=a[i-1];**/

if(num>=a[a.length-1]){b[b.length-1]=num;for(i=0;i

else{for(i=0;i=a[i]){b[i]=a[i];}else{b[i]=num;break;}}for(intj=i+1;j

【程序21】*作者若水飞天题目:

求1+2!

+3!

+...+20!

的和1.程序分析:

此程序只是把累加变成了累乘。

*/package.flywater.FiftyAlgorthm;

publicclassTwenty_firstFactorialSum{

staticlongsum=0;staticlongfac=0;

publicstaticvoidmain(String[]args){

longsum=0;longfac=1;

for(inti=1;i<=10;i++){fac=fac*i;sum+=fac;}

System.out.println(sum);}}/*

【程序32】*作者若水飞天题目:

取一个整数a从右端开始的4~7位。

程序分析:

可以这样考虑:

(1)先使a右移4位。

(2)设置一个低4位全为1,其余全为0的数。

可用~(~0<<4)(3)将上面二者进行&运算。

**//*这个题我不会做,如有高手路过,还望指点**/package.flywater.FiftyAlgorthm;

publicclassThirty_secondFS{

publicstaticvoidmain(String[]args){}}我没有用提示的方法,采用了字串截取。

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

booleanis=true;

System.out.print("请输入一个7位以上的正整数:

");

longa=s.nextLong();Stringss=Long.toString(a);

char[]ch=ss.toCharArray();intj=ch.length;if(j<7){System.out.println("输入错误!

");}

else{System.out.println("截取从右端开始的4~7位是:

"+ch[j-7]+ch[j-6]+ch[j-5]+ch[j-4]);}}

【程序33】*作者若水飞天题目:

打印出杨辉三角形(要求打印出10行如下图)1.程序分析:

11112113311464115101051*//**网上千篇一律是这种写法,我也没有什么创新,*a[i][j]=a[i-1][j]+a[i-1][j-1]就是这个程序的核心*定义的是二维数组,为了使输出的结果看起来漂亮一点*可以用for(intk=0;k<2*(10-i)-1;k++)控制输出的空格*这个循环是在控制行数的循环里面,控制列数的循环外面。

*记得在输出菱形时为了控制下半部分的输出,在下拼命的写出*for(intk=1;k<=WIDTH-2*i-1;k++)才算了事。

*/package.flywater.FiftyAlgorthm;

publicclassThirty_thirdYangTriangle{

publicstaticvoidmain(String[]args){

int[][]a=newint[10][10];for(inti=0;i<10;i++){

a[i][i]=1;a[i][0]=1;}for(inti=2;i<10;i++){

for(intj=1;j

for(inti=0;i<10;i++){for(intk=0;k<2*(10-i)-1;k++)

{System.out.print("");}

for(intj=0;j<=i;j++){System.out.print(a[i][j]+"");}

System.out.println();}}}/*

【程序34】*作者若水飞天题目:

输入3个数a,b,c,按大小顺序输出。

1.程序分析:

利用指针方法。

*//**可惜,Java好像没有指针*/package.flywater.FiftyAlgorthm;importjava.util.Scanner;publicclassThirty_forthCompare{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);inta=s.nextInt();intb=s.nextInt();intc=s.nextInt();if(a

");System.out.println(a+""+b+""+c);}}/*

【程序35】*作者若水飞天题目:

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

**/package.flywater.FiftyAlgorthm;importjava.util.Scanner;publicclassThirty_fifthSwop{staticfinalintN=8;publicstaticvoidmain(String[]args){int[]a=newint[N];Scanners=newScanner(System.in);intindex1=0,index2=0;System.out.println("pleaseinputnumbers");for(inti=0;imax){max=a[i];index1=i;}if(a[i]

=0){inttemp=a[0];a[0]=a[index1];a[index1]=temp;}if(index2!

=a.length-1){inttemp=a[a.length-1];a[a.length-1]=a[index2];a[index2]=temp;}System.out.println("afterswop:

");for(inti=0;i

【程序36】*作者若水飞天题目:

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数**//**这个题不知道有什么好办法,比较直接方法的是把这个数组分成两个数组,*再将两个数组合起来,但如果不控制好数组的下标,就会带来很多麻烦。

*/package.flywater.FiftyAlgorthm;importjava.util.Scanner;publicclassThirty_sixthBackShift{publicstaticfinalintN=10;publicstaticvoidmain(String[]args){int[]a=newint[N];Scanners=newScanner(System.in);System.out.println("pleaseinputarraya,tennumbers:

");for(inti=0;i

");intm=s.nextInt();int[]b=newint[m];int[]c=newint[N-m];for(inti=0;i

【程序37】*作者若水飞天题目:

有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

**//**这个程序是完全抄别人的*/package.flywater.FiftyAlgorthm;importjava.util.Scanner;publicclassThirty_sevenCount3Quit{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);intn=s.nextInt();boolean[]arr=newboolean[n];for(inti=0;i1){if(arr[index]==true){//当在圈里时countNum++;//报数递加if(countNum==3){//报道3时countNum=0;//从零开始继续报数arr[index]=false;//此人退出圈子leftCount--;//剩余人数减一}}index++;//每报一次数,下标加一if(index==n){//是循环数数,当下标大于n时,说明已经数了一圈,index=0;//将下标设为零重新开始。

}}for(inti=0;i

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

*/package.flywater.FiftyAlgorthm;publicclassThirty_eighthStringLength{publicstaticvoidmain(String[]args){Strings="jdfifdfhfhuififffdfggee";System.out.print("字符串的长度是:

");System.out.println(s.length());}}*【程序39】*作者若水飞天题目:

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)**/package.flywater.FiftyAlgorthm;importjava.text.DecimalFormat;importjava.util.*;publicclassThirty_ninthFactionSum{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);intn=s.nextInt();DecimalFormatdf=newDecimalFormat("#0.00000");System.out.println(n+"****result"+df.format(sum(n)));}publicstaticdoublesum(intn){doubleresult=0;if(n%2==0){for(inti=2;i<=n;i+=2){result+=(double)1/n;}}else{for(inti=1;i<=n;i+=2){result+=(double)1/i;}}returnresult;}}/*【程序40】*作者若水飞天题目:

字符串排序。

**/package.flywater.FiftyAlgorthm;

publicclassFortiethStringSort{

publicstaticvoidmain(String[]args){

Stringtemp=null;String[]s=newString[5];s[0]="china".toLowerCase();s[1]="apple".toLowerCase();s[2]="MONEY".toLowerCase();s[3]="BOOk".toLowerCase();s[4]="yeah".toLowerCase();

/*for(inti=0;i0){temp=s[i];s[i]=s[j];s[j]=temp;}}}*/

for(inti=0;i

staticbooleancompare(Strings1,Strings2){booleanresult=true;for(inti=0;is2.charAt(i)){result=false;break;}elseif(s1.charAt(i)

!

下面的代码是个双向循环链表,在LinkedList里抄的...packageLinkedList;importjava.util.Iterator;importjava.util.ListIterator;importjava.util.NoSuchElementException;publicclassMyLinkedList{//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~privateDNodeheader;privateintlistSize;//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~publicMyLinkedList(){header=newDNode();listSize=0;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~privatestaticclassDNode{TnodeValue;DNodeprev;DNodenext;publicDNode(){//forheadernodeValue=null;prev=this;//leftnext=this;//right}publicDNode(Titem){nodeValue=item;prev=this;next=this;}}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~publicbooleanisEmpty(){return(header.prev==header||header.next==header);}publicintsize(){returnlistSize;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~privateDNodeaddBefore(DNodecurr,Titem){DNodenewNode,prevNode;newNode=newDNode(item);prevNode=curr.prev;newNode.prev=prevNode;newNode.next=curr;prevNode.next=newNode;curr.prev=newNode;returnnewNode;}publicbooleanadd(Titem){addBefore(header,item);listSize++;returntrue;}publicvoidaddFirst(Titem){addBefore(header.next,item);listSize++;}publicvoidaddLast(Titem){addBefore(header,item);listSize++;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~p

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

当前位置:首页 > 表格模板 > 合同协议

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

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