Java数据结构与经典算法高手必会DOC.docx
- 文档编号:6135691
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:117
- 大小:79.86KB
Java数据结构与经典算法高手必会DOC.docx
《Java数据结构与经典算法高手必会DOC.docx》由会员分享,可在线阅读,更多相关《Java数据结构与经典算法高手必会DOC.docx(117页珍藏版)》请在冰点文库上搜索。
Java数据结构与经典算法高手必会DOC
1.大O表示法:
粗略的量度方法即算法的速度是如何与数据项的个数相关的
算法大O表示法表示的运行时间
线性查找O(N)
二分查找O(logN)
无序数组的插入O
(1)
有序数组的插入O(N)
无序数组的删除O(N)
有序数组的删除O(N)
O
(1)是最优秀的,O(logN)良好,O(N)还可以,O(N2)稍差(在冒泡法中见到)
2.排序
publicclassJWzw{
//插入排序
publicvoidinsertArray(Integer[]in){
inttem=0;
intnum=0;
intupnum=0;
for(inti=0;i for(intj=i-1;j>=0;j--){ num++; if(in[j+1] tem=in[j+1]; in[j+1]=in[j]; in[j]=tem; upnum++; } else { break; } } } for(inti=0;i System.out.print(in[i]); if(i { System.out.print(","); } } System.out.println(); System.out.println("插入排序循环次数: "+num); System.out.println("移动次数: "+upnum); System.out.print("\n\n\n"); } //选择排序 publicvoidchooseArray(Integer[]in){ inttem=0; intnum=0; intupnum=0; for(inti=0;i { for(intj=i;j num++; if(in[j+1] tem=in[j+1]; in[j+1]=in[j]; in[j]=tem; upnum++; } } } for(inti=0;i System.out.print(in[i]); if(i { System.out.print(","); } } System.out.println(); System.out.println("选择排序循环次数: "+num); System.out.println("移动次数: "+upnum); System.out.print("\n\n\n"); } //冒泡排序 publicvoidefferArray(Integer[]in){ inttem=0; intnum=0; intupnum=0; for(inti=0;i for(intj=i;j { num++; if(in[j+1] tem=in[j+1]; in[j+1]=in[i]; in[i]=tem; upnum++; } } } for(inti=0;i System.out.print(in[i]); if(i { System.out.print(","); } } System.out.println(); System.out.println("冒泡排序循环次数: "+num); System.out.println("移动次数: "+upnum); System.out.print("\n\n\n"); } //打印乘法口诀 publicvoidprintMulti(){ for(intj=1;j<10;j++){ for(inti=1;i<=j;i++){ System.out.print(i+"*"+j+"="+j*i+"\t"); } System.out.print("\t\n"); } System.out.print("\n\n\n"); } //打印N*1+N*2+N*3=num的所有组合 publicvoidprintNumAssemble(intnum){ for(inti=0;i for(intj=0;j for(intin=0;in if(i*1+j*2+in*3==num){ System.out.println("小马"+i+",\t中马"+j+",\t大马"+in); } } } } } /** *@paramargs */ publicstaticvoidmain(String[]args){ JWzwjwzw=newJWzw(); intnum=3; jwzw.printMulti();//打印乘法口诀 jwzw.printNumAssemble(100);//打印N*1+N*2+N*3=num的所有组合 Integerin[]={8,89,5,84,3,45,12,33,77,98,456,878,654,213,897}; jwzw.efferArray(in);//冒泡排序 Integerin1[]={8,89,5,84,3,45,12,33,77,98,456,878,654,213,897}; jwzw.insertArray(in1);//插入排序 Integerin2[]={8,89,5,84,3,45,12,33,77,98,456,878,654,213,897}; jwzw.chooseArray(in2);//选择排序 //inti=num++; //System.out.println(i); System.out.println(1000>>2); } } 3.优先级队列 classPriorityQueue{ privatelong[]a=null; privateintnItems=0; privateintmaxSize=0; publicPriorityQueue(intmaxSize){ a=newlong[maxSize]; this.maxSize=maxSize; nItems=0; } publicvoidinsert(longl){ //优先级队列的插入不是队尾,而是选择一个合适的按照某种顺序插入的 //当队列长度为0时,如下 //不为0时,将所有比要插入的数小的数据后移,这样大的数就在队列的头部了 inti=0; if(nItems==0){ a[0]=l; }else{ for(i=nItems-1;i>=0;i--){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 数据结构 经典 算法 高手 DOC