1、冒泡法
原理:比较两个相邻的元素,将值大的元素交换至右端。
由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即
public class BubbleSort { public static void BubbleSort(int[] arr) { int temp;//定义一个临时变量 for(int i=0;i<arr.length-1;i++){//冒泡趟数 for(int j=0;j<arr.length-i-1;j++){ if(arr[j+1]<arr[j]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
2、二分法
private int search(int[] arr,key){
int start = 0;
int end = arr.length;
while(start<= end){
int middle = (start+end)/2;
if(key>arr[middle]){
start = middle+1;
}else if(key<arr[middle]){
end = middle-1;
}else{
return middle;
}
return -1;
}