Java基础错题本

【读Java:A Beginner’s Guide后,对java基础中的重点、注意点归纳】
【持续更新】
ASCII

A 65
Z 96
a 97
z 122

冒泡排序

效率不高,在小数组可以使用
总便利次数=元素数-1

//第一种方法
 for(a=0;a<size-1;a++)
	 for(b=0;b<size-a-1;b++){
	 ...//交换}

//第二种方法
 for(a=1;a<size;a++)
	for(b=size-1;b>=a;b--){
		 ...//交换}

队列结构

Put把元素放在队列最后
get检索队列最前端的元素
一旦被检索后就不能再次被检索

  • 设putloc、getloc两个int变量,初始化为0
  • 队列满:putloc==q.length
    0不放数据,从q[1]开始,因此先判断满再自增
void put(char ch){
	if(putloc==q.length){
...}
	q[putloc++]=ch;
}
  • 队列空:getloc==putloc
void get(){
	if(getloc==putloc){
...}
	return q[getloc++];
}

循环队列

当putloc或getloc等于长度的时候设为0
满的边界条件:
if(putloc+1== getloc|(putloc== q.length)&&(getloc==0))

class Circularqueue implements ICharQ{
private char q[];
private int putloc,getloc;

    public Circularqueue(int size){
        q=new char[size];
        putloc=getloc=0;
    }

    @Override
    public void put(char ch) {
        if(putloc==getloc-1|putloc==q.length&&getloc==0){
            System.out.println("the queue is full.");
            return;
        }
        q[putloc++]=ch;
        if(putloc==q.length)
            putloc=0;
    }

    @Override
    public char get() {
       if(putloc==getloc&&(putloc!=0&&getloc!=0)){
       // if(putloc==getloc){
         System.out.println("the queue is empty.");
         return (char)0;
       }
        if(getloc==q.length)
            getloc=0;
        char ch=q[getloc++];
        return ch;
    }
}

自动增长队列

Putloc等于长度后,新建一个数组,再赋给元数列

public void put(char ch) {
      if(putloc==q.length){
          char t[]=new char[q.length*2];
          for(int i=0;i<q.length;i++){
              t[i]=q[i];
          }
          q=t;
        }
      q[putloc++]=ch;
    }

    @Override
    public char get() {
       if(getloc==putloc){
           System.out.println("the queue is empty.");
           return 0;
       }
        return q[getloc++];
    }

快速排序

取一个值称为比较字,把数组分成两边。大的放一边,小的放一边。接着两部分再进行快排。采用递归思想。

void quicksort(char q[],int left,int right){
int i,j;
char x,temp;
i=left;
j=right;
x=q[(left+right)/2];
do{
	while((q[i]<x)&&(i<right)) i++;
	while((q[j]>x)&&(j>left)) j--;
	if(i<=j){
		temp=q[i];
		q[i]=q[j];
		q[j]=temp;
		i++;j--;
		}
}while(i<=j);
if(left<j) quicksort(q,left,j);
if(right>i) quicksort(q,i,right);
}

猜你喜欢

转载自blog.csdn.net/qq_34287121/article/details/88557200
今日推荐