对数组的排序,折半查找,遍历,求取最大值
2014-12-21 13:45
204 查看
ArrayTools.java
//遍历数组,最大值,排序,二分查找
/**
<h1>ArrayTools操作数组的便捷类,包括对数组的排序,折半查找,遍历,求取最大值</h1>
@author 石松
@version 1.0
*/
public class ArrayTools
{
public ArrayTools(){}
/**
binarySearch方法实现了对数组的折半查找法,如果元素存在于数组中,
返回所在位置的角标,不在数组中,返回小于0的数
@param arr ,key 传递数组和需要查找的关键字
@return mid 所在数组的下标
*/
public static int binarySearch(int[] arr ,int key)
{
int min = 0;
int max = arr.length - 1;
int mid = 0;
while(min <= max)
{
mid = (min+max)/2;
if(key > arr[mid])
{
min = mid + 1;
}
else if(key < arr[mid])
{
max = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
/**
select方法,对数组进行排序,次算法是一个经过优化的算法
@param arr 传递整型数组
*/
public static void select(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])
{
swap(arr,x,y);
}
}
}
}
/**
数组换位的专用函数
*/
private static void swap(int[] arr , int x ,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
/**
getMax方法,获取数组中的最大值
@param arr 传递整型数组
@return max 最大值
*/
public static int getMax(int[] arr)
{
int max = 0;
for(int x = 1 ; x < arr.length ; x++)
{
if(arr[max] < arr[x])
{
max = x;
}
}
return arr[max];
}
/**
printArr方法,将数组打印在控制台上
@param arr 传递整型数组
*/
public static void printArr(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]+"");
}
}
System.out.println("]");
}
}
TestArrayArray.java
package arraytools;
class TestArrayTools
{
public static void main(String[] args)
{
int[] arr ={3,2,56,78,23,723,65};
ArrayTools.printArr(arr);
ArrayTools.select(arr);
ArrayTools.getMax(arr);
ArrayTools.printArr(arr);
/* for (int x =0; x<args.length;x++ )
{
System.out.println(args[x]);
}*/
}
}
结果:
[3,2,56,78,23,723,65]
723
[2,3,23,56,65,78,723]
//遍历数组,最大值,排序,二分查找
/**
<h1>ArrayTools操作数组的便捷类,包括对数组的排序,折半查找,遍历,求取最大值</h1>
@author 石松
@version 1.0
*/
public class ArrayTools
{
public ArrayTools(){}
/**
binarySearch方法实现了对数组的折半查找法,如果元素存在于数组中,
返回所在位置的角标,不在数组中,返回小于0的数
@param arr ,key 传递数组和需要查找的关键字
@return mid 所在数组的下标
*/
public static int binarySearch(int[] arr ,int key)
{
int min = 0;
int max = arr.length - 1;
int mid = 0;
while(min <= max)
{
mid = (min+max)/2;
if(key > arr[mid])
{
min = mid + 1;
}
else if(key < arr[mid])
{
max = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
/**
select方法,对数组进行排序,次算法是一个经过优化的算法
@param arr 传递整型数组
*/
public static void select(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])
{
swap(arr,x,y);
}
}
}
}
/**
数组换位的专用函数
*/
private static void swap(int[] arr , int x ,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
/**
getMax方法,获取数组中的最大值
@param arr 传递整型数组
@return max 最大值
*/
public static int getMax(int[] arr)
{
int max = 0;
for(int x = 1 ; x < arr.length ; x++)
{
if(arr[max] < arr[x])
{
max = x;
}
}
return arr[max];
}
/**
printArr方法,将数组打印在控制台上
@param arr 传递整型数组
*/
public static void printArr(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]+"");
}
}
System.out.println("]");
}
}
TestArrayArray.java
package arraytools;
class TestArrayTools
{
public static void main(String[] args)
{
int[] arr ={3,2,56,78,23,723,65};
ArrayTools.printArr(arr);
ArrayTools.select(arr);
ArrayTools.getMax(arr);
ArrayTools.printArr(arr);
/* for (int x =0; x<args.length;x++ )
{
System.out.println(args[x]);
}*/
}
}
结果:
[3,2,56,78,23,723,65]
723
[2,3,23,56,65,78,723]
相关文章推荐
- (13)数组操作:遍历、输出最大值、冒泡排序、选择排序,java已有的排序方法、折半查找
- 数组的遍历,获取最大值,数组的反转,数组中元素的查找、冒泡排序、选择排序、折半查找法
- 1.数组--最大值 2.数组--选择排序与图解 3.数组--冒泡排序图解 4.数组--1.自带排序2.遍历功能方便 5.数组-常见操作-排序位置置换代码提取
- 数组的遍历,获取最大值,数组的反转,数组中元素的查找、冒泡排序、选择排序、折半查找法
- Java数组遍历、求最大值、选择排序、冒泡排序、二分查找
- 数组冒泡排序,选择排序,逆序,折半查找,遍历方法
- A.2.4-数组的定义,遍历,求和,平均值,求最大值
- java 数组排序、最大值、最小值
- 数组排序数字大小,与筛选最大值最小值。冒泡比较法。。研究了好久才写出来与大家分享
- 一道面试题:对一个数组进行排序,要求第一个最大、第二
- 函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
- 不排序,两种方法找到无序数组的最大K个数
- 已知一数组,按第一个数最大第二个数最小,依次下去进行的规则排序
- 用sort()方法对数组的元素进行排序(可按字母升序降序与获得最大最小值)
- 1486. 统计数字(先排序,再遍历数组统计出现次数)
- 《黑马程序员》java笔记->【02】数组的常见操作:遍历,排序,查找
- 不排序,两种方法找到无序数组的最大K个数
- C/C++与Java多维数组,遍历与最大值获取方法!
- 题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
- PHP学习(15) 数组的遍历和排序