今天讲三个算法:遍历数组,冒泡排序,二分法
首先来说说遍历数组吧,没啥好说的,直接上代码吧。
package com.Tips;
public class Demo {
public static void printArray(int[] a){
System.out.print("[");
for(int i=0;i<=a.length-1;i++){
if(i<a.length-1){
System.out.print(a[i]);
}
else if(i==a.length-1){
System.out.println(a[i]+"]");
}
}
}
public static void main(String[] args) {
int[] a =new int[] {1,2,3,4,5,6,7,8,9};
printArray(a);
}
}
还有就是冒泡应该也能熟练地写出来:
package com.Tips;
public class Demo {
public static void swap(int[] array,int a,int b){
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
public static void printArray(int[] a){
System.out.print("[");
for(int i=0;i<=a.length-1;i++){
if(i<a.length-1){
System.out.print(a[i]);
}
else if(i==a.length-1){
System.out.println(a[i]+"]");
}
}
}
public static void main(String[] args) {
int[] a =new int[] {1,3,5,2,8,6,4,7,9};
for(int i =0;i<=a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
swap(a,j,j+1);
}
}
}
printArray(a);
}
}
接着就是二分法了:
package com.Tips;
public class Demo {
public static int halfSearch(int[] array,int key){
int min = 0;
int max = array.length-1;
while(min<=max){
int mid = (min+max)/2;
if(array[mid]<key){
max = mid - 1;
}
else if(array[mid]>key){
min = mid + 1;
}
else{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] a =new int[] {1,3,5,2,8,6,4,7,9};
System.out.println(halfSearch(a,11));
}
}