------- android培训、java培训、期待与您交流! ----------
选择排序与冒泡排序
选择排序:
思路:1,将数组中的每一个元素分别都与后面的元素逐个比较。
2,将每次比较的两元素进行比较互换。
3,将经过操作后的数组打印输出,得到结果。
冒泡排序:
思路:1,将数组中的相邻的元素进行比较,
2,将每一次相邻比较的大的与后面相邻的元素比较,一次类推
3,将比较的元素输出,在将剩余的元素按照上面比较,比较出所有元素。
class ArryTest2
{
public static void main(String[] args)
{
int[]arr = {23,45,99,33,56,289};
//selectSort(arr);
bubbleSort(arr);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
}
public static void selectSort(int[] arr)//选择排序
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] =temp;
}
}
}
}
public static void bubbleSort(int[] arr)//冒泡排序
{
for (int x=0;x<arr.length-1 ;x++ )
{
for(int y=0; y<arr.length-x-1; y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y+1];
arr[y+1] = arr[y];
arr[y] =temp;
}
}
}
}
}
折半查找:
思路:1,将首尾的角标相加折半后的角标,这个角标位置的元素与指定的数值比较
2,如果角标位置元素比指定的数值大,min增加1,反之,则max-1;
3,当min<=max,折半循环比较,当出现min>max,是不成立的。
4,输出位置的角标。
折半查找提高效率,但是必须要保证该数组是有序的数组。
class ArryTest1
{
public static void main(String[] args)
{
int[] arr = new int[]{1,5,7,9,12,56,78};
int key = halfSearch(arr,12);
System.out.println(key);
}
public static int halfSearch(int[] arr,int key)//折半查找
{
int min=0,max=arr.length-1,mid;
while (min <= max)
{
mid = (max+min)/2;
if (key > arr[mid])
min = mid+1;
else if(key < arr[mid])
max = mid-1;
else
return mid;
}
return -1;
}
}