【读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);
}