设计一个有序顺序表 数据结构(java)

作者&投稿:叔章 (若有异议请与网页底部的电邮联系)
数据结构两个有序顺序表的合并?~

这里用数组表示有序表。a[],n,b[],m;假设都是由小到大的,排序后也是由小到大的。结果存于c[],k
这里把相等也当成有序的。
void combine(int a[],int n,int b[],int m,int c[])
{
int i,j;
i=j=0;
k=0;
while(i<n&&j<m)
{
if(a[i]<b[j]) {c[k++]=a[i];i++;}
else {c[k++]=b[j];j++;}
}
for(;i<n;i++) c[k++]=a[i];
for(;j<m;j++) c[k++]=b[j];
}

自己没去调查?!
出帐表
进帐表
会计人员表
定期核算表

package array;

class OrderArray{
private long[] a;
private int nElems;

public OrderArray(int maxSize){
a = new long[maxSize];
nElems = 0;
}

public void insert(long value){
int pos = 0;
for(pos=0;pos<nElems;pos++){
if(a[pos]>value){
break;
}
}
for(int i=nElems;i>pos;i--){
a[i] = a[i-1];
}
a[pos] = value;
nElems++;
}

public boolean delete(long value){
int pos = find(value);
if(pos!=-1){
for(int i=pos;i<nElems;i++){
a[i] = a[i+1];
}
nElems --;
return true;
}
return false;
}

public int find(long keySearch){
int lowerBound = 0;
int upperBound = nElems-1;
int curIn = 0;
while(true){
curIn = (lowerBound+upperBound)/2;
if(a[curIn]==keySearch){
return curIn;
}else if(lowerBound>upperBound){
return -1;
}else{
if(a[curIn]>keySearch){
upperBound = curIn -1;
}else{
lowerBound = curIn +1;
}
}
}
}

public void display(){
for(int i=0;i<nElems;i++){
System.out.println(a[i]);
}
}
}

public class OrderArrayApp {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int maxSize = 100;
OrderArray orderArray = new OrderArray(maxSize);
orderArray.insert(1);
orderArray.insert(7);
orderArray.insert(9);
orderArray.insert(8);
orderArray.insert(6);
orderArray.insert(4);
orderArray.display();
orderArray.delete(8);
orderArray.display();
}

}

唉……
又是求作业的吧?建议还是自己动手的好