//冒泡排序
public static void bubbleSort(int []arr)
{
//外层一共比较arr.length-1次,因为最后一个数不用比。
for ( int x=0; x<arr.length-1; x++)
{
//外层每比较一次,内层需要比较的次数就少一次,所以和x关联上,
//减1是为了防止y+1越界。
for ( int y=0; y<arr.length-x-1; y++)
{
if (arr[y]>arr[y+1])
{
//调用位置置换的方法
swap(arr,y,y+1);
}
}
}
}
//选择排序
public static void selectSort(int [] arr)
{
for (int x=0; x<arr.length; x++)
{
//y从x+1开始和x角标的值进行比较,因为当前角标和当前角标比,没有意义。
for (int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
//调用位置置换的方法
swap(arr,x,y);
}
}
}
}
//打印数组
public static void printArray(int arr[])
{
System.out.print("[");
for (int x=0; x<arr.length; x++)
{
if (x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
//查找数组中的最大值
public static int getMax(int [] arr)
{
int max = arr[0];
for (int x =0; x<arr.length; x++)
{
if (arr[x]>max)
{
max = arr[x];
}
}
return max;
}
//查找数组中的最小值
public static int getMin(int [] arr)
{
int min = arr[0];
for (int x =0; x<arr.length; x++)
{
//如果
if (arr[x]<min)
{
min = arr[x];
}
}
return min;
}
//查找某个数字在数组中的位置(折半查找)
public static int getPosition(int arr[] ,int key)
{
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
//注意:折半查找必须是对有序数列进行,
//所以先调用一个排序方法对给出的数组进行排序操作。
selectSort(arr);
while (arr[mid]!= key)
{
if (arr[mid]>key)
{
max = mid - 1;
}
else if (arr[mid]<key)
{
min = mid + 1;
}
if (min > max)
return -1;
mid = (min+max)/2;
}
return mid;
}