您的位置:首页 > 职场人生

几种常见算法,面试经常考

2017-04-28 11:21 176 查看
最近在面试 每次总有几道算法题。算法 这种东西啊, 没有深入骨髓几天不用就忘了,现在来记录下。

求最值:

int a[]={21,213,55,78};
int max=a[0];
for(int k=0;k<a.lenth;k++){

if(max<a[k]){
max=a[k];
}
}


选择排序:

for(int i=0;i<a.lenth-1;i++){
for(int j=i+1;j<a.lenth;j++){
if(a[i]<a[j]){
int tmp =a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}


冒泡排序:

for(int i=0;i<a.lenth-1;i++){

for(int j=0;j<a.lenth-1-i;j++){

if(a[j+1]<a[j]) {
int temp=a[j];
a[j+1]=a[j];
a[j]=a[j+1];
}
}
}


直接插入排序

for(int i=1;i<a.lenth;i++){

int j=i-1;
int temp=a[i];

for(;j>=0&&temp<a[j];j--){

a[j+1]=a[j]; //大于temp整体后移

}
a[j+1]=temp; //最低位

}


二分查找:

//循环形式
public static int binarySearch(int[] arr, int x) {
int low = 0;
int hight = arr.length - 1;
while (low <= hight) {
int middle = (hight + low) / 2;
if (x == arr[middle]) {
return middle;
} else if (x < arr[middle]) {
hight = middle - 1;
} else if (x > arr[middle]) {
low = middle + 1;
}
}
return -1;
}

//递归形式

protected static int binarySearch(int[] arr, int x, int beginIndex,
int endIndex) {
// 升序的数组
int midIndex = (beginIndex + endIndex) / 2;
if (x < arr[beginIndex] || x > arr[endIndex] || beginIndex > endIndex) {
return -1;
}

if (x < arr[midIndex]) {
return binarySearch(arr, x, beginIndex, endIndex - 1);
} else if (x > arr[midIndex]) {
return binarySearch(arr, x, beginIndex + 1, endIndex);

} else {
return arr[midIndex];
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: