数据结构回忆

回忆回忆数据结构 :lol:
有序数组,优点:查找速度快,插入删除慢

package Structure;

public class OrderArray {
private int[] a;
private int nElems;
public OrderArray(int max){
a=new int[max];
nElems=0;
}
public int size(){
return nElems;
}
public int find(int searchkey){
int lowerBound=0;
int upperBound = 0;
int curIn;

while(true){
curIn=(lowerBound+upperBound)/2;
if(a[curIn]==searchkey){
return curIn;
}else if(lowerBound>upperBound){
return curIn;
}else{
if(a[curIn]<searchkey){
lowerBound=curIn+1;
}
if(a[curIn]>searchkey){
upperBound=curIn-1;
}
}
}
}
public void insert(int value){
int j;
for(j=0;j<nElems;j++){
if(a[j]>value){
break;
}
}
for(int i=nElems;i>j;i--){
a[i]=a[i-1];
}
a[j]=value;
nElems++;
}
public boolean delete(int value){
int j=find(value);
if(j==nElems){
return false;
}else{
for(int i=j;i<nElems;i++){
a[i]=a[i+1];
}
nElems--;
return true;
}
}
}



简单排序:
1.冒泡排序
最原始的排序~~分为有序区与无序区,2层循环,如外层循环用out表示,内层循环用in表示,则大于out的区为有序区,每完成一次内层循环,out就减一,因为之前无序的最大项已经出来了~~不需要再为其排序,内层循环从0开始,到out,in与in+1每比较一次,大的交换到后面,可以看作是一种很冲动的排序,效率自然不敢恭维
2.选择排序
选择排序是冒泡的改进,可以理解为还是比较冷静的行为,至少交换数据项的时候先经过观察
3.插入排序
局部有序,标记一个数据项,此数据项的左边已有序,数据右移,直到一个数据项比被标记的数据项小为止。

public class Sort {
private int[] a;
private int nElems;
public Sort(int max){
a=new int[max];
nElems=0;
}
public void bubbleSort(int[] a){
int out,in;
for(out=nElems-1;out>1;out--){
for(in=0;in<out;in++){
if(a[in]<a[in+1]){
swap(in,in+1);
}
}
}
}
public void selectSort(){
int min;
for (int out= 0; out<nElems-1; out++) {
min=out;
for(int in=out+1;in<nElems;in++){
if(a[min]>a[in]){
min=in;
}
}
swap(out,min);
}
}
public void insertSort(){
int in,out;
for(out=0;out<nElems;out++){
int temp=a[out];
in=out;
while(in>0 && a[in-1]>temp){
a[in]=a[in-1];
in--;

}
a[in]=temp;
}
}

private void swap(int in, int i) {
int temp;
temp=in;
in=i;
i=temp;

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值