Java数据结构与经典算法高手必会Word文档下载推荐.docx
- 文档编号:19443444
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:102
- 大小:290.70KB
Java数据结构与经典算法高手必会Word文档下载推荐.docx
《Java数据结构与经典算法高手必会Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java数据结构与经典算法高手必会Word文档下载推荐.docx(102页珍藏版)》请在冰豆网上搜索。
if(i<
in.length-1)
{
System.out.print("
"
);
System.out.println();
System.out.println("
插入排序循环次数:
"
+num);
移动次数:
+upnum);
System.out.print("
\n\n\n"
}
//选择排序
publicvoidchooseArray(Integer[]in){
for(inti=0;
i<
i++)
{
for(intj=i;
j<
in.length-1;
j++){
if(in[j+1]<
in[j]){
in[j+1]=in[j];
选择排序循环次数:
//冒泡排序
publicvoidefferArray(Integer[]in){
i++){
j++)
in[i]){
in[j+1]=in[i];
in[i]=tem;
冒泡排序循环次数:
//打印乘法口诀
publicvoidprintMulti(){
for(intj=1;
j<
10;
j++){
for(inti=1;
=j;
System.out.print(i+"
*"
+j+"
="
+j*i+"
\t"
System.out.print("
\t\n"
//打印N*1+N*2+N*3=num的所有组合
publicvoidprintNumAssemble(intnum){
num+1;
for(intj=0;
num/2+1;
for(intin=0;
in<
num/3+1;
in++){
if(i*1+j*2+in*3==num){
System.out.println("
小马"
+i+"
\t中马"
\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);
}
优先级队列
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--){
if(l<
a[i])
a[i+1]=a[i];
else
break;
a[i+1]=l;
nItems++;
publiclongremove(){
//移出的是数组最上端的数,这样减少数组元素的移动
returna[--nItems];
publicbooleanisEmpty(){
return(nItems==0);
publicbooleanisFull(){
return(nItems==maxSize);
publicintsize(){
returnnItems;
publicclassduilie{//队列体类
privateduilies;
privateStringdata;
duilie(Stringdata){
this.data=data;
publicStringgetData(){
returndata;
publicvoidsetData(Stringdata){
publicduiliegetS(){
returns;
publicvoidsetS(duilies){
this.s=s;
publicclassduiliecz{//队列操作类
privateinti=0;
//队列长
privateduilietop=newduilie("
//队列头
privateduilieend=newduilie("
//队列尾
publicvoidadd(Strings){//添加队列
duiliem=newduilie(s);
if(i!
=0){
m.setS(top.getS());
top.setS(m);
end.setS(m);
i++;
队列
publicvoiddel(){//删除队尾
if(i==0){
return;
}elseif(i==1){
top.setS(null);
end.setS(null);
duilietop1=newduilie("
//队列底查找用缓存
top1.setS(top.getS());
while(!
top1.getS().getS().equals(end.getS())){
top1.setS(top1.getS().getS());
end.setS(top1.getS());
i--;
//TODOAuto-generatedmethodstub
duilieczm=newduiliecz();
m.add("
1"
2"
3"
4"
for(intn=0;
n<
4;
n++){
m.del();
publicintgetI(){
returni;
publicduiliegetEnd(){
returnend;
publicduiliegetTop(){
returntop;
栈
publicclassStack{
int[]arr;
intlen=0;
publicStack(){
arr=newint[100];
publicStack(intn){
arr=newint[n];
publicintsize(){
returnlen+1;
//扩大数组
publicvoidresize(){
int[]b=newint[arr.length*2];
System.arraycopy(arr,0,b,0,arr.length);
arr=b;
publicvoidshow(){
len;
System.out.print(arr[i]+"
"
//进栈
publicvoidpush(inta){
if(len>
=arr.length)
resize();
arr[len]=a;
len++;
//出栈
publicintpop(){
if(len==0){
System.out.println();
System.out.println("
stackisempty!
return-1;
inta=arr[len-1];
arr[len-1]=0;
len--;
returna;
链表
classNode{
Objectdata;
Nodenext;
publicNode(Objectdata){
setData(data);
publicvoidsetData(Objectdata){
this.data=data;
publicObjectgetData(){
returndata;
classLink{
Nodehead;
intsize=0;
publicvoidadd(Objectdata){
Noden=newNode(data);
if(head==null){
head=n;
}else{
Nodecurrent=head;
while(true){
if(current.next==null){
current=current.next;
current.next=n;
size++;
Nodecurrent=head;
if(current!
=null){
System.out.println(current);
if(current==null){
linkisempty"
publicObjectget(intindex){
//....
returnsize;
单链表
classNode//节点类,单链表上的节点
{
Stringdata;
//数据域,存放String类的数据
//指向下一个节点
Node(Stringdata){
//构造函数
Stringget(){
//返回数据
classMyLinkList//链表类
Nodefirst;
//头节点
intsize;
//链表长度
MyLinkList(Stringarg[]){
//Nodefirst=newNode("
head"
//生成头节点
first=newNode("
//J.F.这里不需要定义局部变量first
//如果定义了局部变量,那成员变量first就一直没有用上
//所以,它一直为空
size=0;
Nodep=first;
arg.length;
i++)//将arg数组中的元素分别放入链表中
Nodeq=newNode(arg[i]);
q.next=p.next;
//每一个节点存放一个arg数组中的元素
p.next=q;
p=p.next;
size++;
MyLinkList()//无参数构造函数
{
//J.F.这里犯了和上一个构造方法同样的错误
intsize()//返回链表长度
voidinsert(Nodea,intindex)//将节点a插入链表中的第index个位置
Nodetemp=first;
index;
temp=temp.next;
//找到插入节点的前一节点
a.next=temp.next;
//插入节点
temp.next=a;
Nodedel(intindex)//删除第index个节点,并返回该值
//找到被删除节点的前一节点
Nodenode=temp.next;
temp.next=node.next;
size--;
//删除该节点,链表长度减一
returnnode;
voidprint()//在屏幕上输出该链表(这段程序总是出错,不知道错在哪里)
for(inti=1;
size;
i++)//将各个节点分别在屏幕上输出
System.out.print(temp.get()+"
->
voidreverse()//倒置该链表
insert(del(size-1),0);
//将最后一个节点插入到最前
//J.F.最后一个节点的index应该是size-1
//因为第一个节点的index是0
Stringget(intindex)//查找第index个节点,返回其值
if(index>
=size){
returnnull;
//找到被查找节点的前一节点
returntemp.next.get();
classMyStack//堆栈类,用单链表实现
MyLinkListtmp;
Nodetemp;
MyStack(){
//MyLinkListtmp=newMyLinkList();
tmp=newMyLinkList();
//J.F.和MyLinkList构造方法同样的错误
voidpush(Stringa)//压栈,即往链表首部插入一个节点
Nodetemp=newNode(a);
tmp.insert(temp,0);
Stringpop()//出栈,将链表第一个节点删除
Nodea=tmp.del(0);
returna.get();
intsize(){
returntmp.size();
booleanempty()//判断堆栈是否为空
if(tmp.size()==0)
returnfalse;
else
returntrue;
publicclassMyLinkListTest//测试程序部分
publicstaticvoidmain(Stringarg[])//程序入口
if((arg.length==0)||(arg.length>
10))
长度超过限制或者缺少参数"
else{
MyLinkListll=newMyLinkList(arg);
//创建一个链表
ll.print();
//先输出该链表(运行到这一步抛出异常)
ll.reverse();
//倒置该链表
//再输出倒置后的链表
Stringdata[]=newString[10];
inti;
for(i=0;
ll.size();
data[i]=ll.get(i);
//将链表中的数据放入数组
//sort(data)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 数据结构 经典 算法 高手