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