一 冒泡排序
冒泡排序:相邻的两个元素比较,符合条件交换位置
示例:
//所谓排序就是将一个个最大元素放在对应的位置上。
int[] arr = {2,5,3,6,1,9};
//j是控制轮数,每一轮都可以找出一个最大值。
for(int j = 0;j<arr.length-1;j++)
{
//相邻的两个元素比较
for(int i = 0;i<arr.lenght-1-j;i++)
{
if(arr[i]>arr[i+1])
{
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
二 折半查找法(二分查找法)
二分查找法使用的前提是数据必须是有序的。
折半查找法的思路 :定义三个变量记录查找范围内的最大、最小、中间索引,每次都是使用中间索引对应的值与要查找目标进行对比,如果不是符合的目标就缩小查找的范围。
示例:
public int halfSearch(int[] arr,int target)
{
int max = arr.lenght-1; //最大的索引
int min = 0; //最小的索引
int mid = (max+min)/2; //中间的索引
while(true)
{
//目标值和中间值比较 大于中间值 说明目标值在中间值的右边 最小索引要更改到中间值索引的右边下一个
if(target>arr[mid])
{
min = mid+1;
}
else if(target<arr[mid])
{
//目标值和中间值比较,小于中间值,说明目标值在中间值的左边 最大索引要更改到中间值索引的左边下一个
max = mid-1;
}
else
{
return mid;
}
//每查完一次 要重新计算中间值
mid = (min+max)/2;
//目标值不在数组中
if(max<min)
{
returen -1;
}
}
}