冒泡排序
思路:
冒泡排序的思路
代码实现:
public static void bubbleBetterSort(int[] array){
int len = array.length;
//int counter = 0;
//外层控制趟数
for(int i=0;i<len-1;i++){
//counter ++;
//内层控制本趟的相邻元素的逐个比较
boolean flag = false;
for(int j=0;j<len-i-1;j++){
if(array[j] > array[j+1]){
//交换
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
//p("counter = "+counter , true);
}
选择排序
算法思想:从待排序的数组中选择一个最小的元素,将它与数组的第一个位置的元素交换位置。然后从剩下的元素中选择一个最小的元素,将它与第二个位置的元素交换位置,如果最小元素就是该位置的元素,就将它和自身交换位置,依次类推,直到排序完成。
选择排序算法思路
代码实现:
public static void selectSort(int[] array){
int len = array.length;
for(int i=0;i<len-1;i++){
int min = i;//最小值下标
for(int j = i+1;j<len;j++){
if(array[j]<array[min]){
min = j;
}
}
//i当前的值,代表着待排序部分的第一个元素
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
二分查找
算法思路:通过每次循环,重新确定查找的区间范围,不停的缩减范围,直到找到最后的数据。
public static int myBinarySearch(int[] array, int key){
int len = array.length;
int insertIndex = len>>1;
final int firstInsertIndex = insertIndex;
int startIndex = 0;//查找的开始索引
int endIndex = len-1;//查找的结束索引。
int counter = 0;
while(endIndex >= startIndex){
counter ++;
if(array[insertIndex] > key){
endIndex = insertIndex - 1;
}else if(array[insertIndex] < key){
startIndex = insertIndex + 1;
}else{
System.out.println("counter = "+counter);
return insertIndex;
}
//first
insertIndex = (endIndex-startIndex) /2 + startIndex;
}
System.out.println("counter = "+counter);
return - firstInsertIndex - 1;
}
网友评论