常见算法中的排序和查找:
1. 选择排序(指定一个和其他数比较)
// 选择排序(指定一个和其他数比较)
for(int i=0;i<length-1;i++){
for(int j=i+1;j<length;j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
2. 冒泡排序(相邻两个数比较)
// 冒泡排序(相邻两个数比较)
for(int i=0;i<length-1;i++){
for (int j=0;j<length-1-i;j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
3. 插入排序(指定一个数和他左边的数依次往左比较,直到不满足条件为止)
//插入排序(指定一个数和他左边的数依次往左比较,直到不满足条件为止) //方法一: for(int i=0;i<length;i++){ for(int j=i;j-1>=0 && arr[j-1]>arr[j];j--){ int trmp = arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } //方法二: for(int i=0;i<length;i++){ int e = arr[i]; int j; for(j=i;j-1>=0 && arr[j-1]>e;j--){ arr[j]=arr[j-1]; } arr[j]=e; }
4. 二分查找(折半查找)
//二分查找(折半查找) int key=要找的数; int min=0; int max=length-1; int mid=(min+max)/2; while(arr[mid]!=key){ if(arr[mid]>key){ max=mid-1; } if(arr[mid]<key){ min=mid+1; } mid=(min+max)/2; if(max<min){ mid=-1; break; } } System.out.printf(mid);