JAVA数组操作及选择、冒泡排序
2013-09-18 14:22
381 查看
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr = {9,3,2,6,4};
//selSort(arr);
//bubSort(arr);
printArray(arr);
int max = getMax(arr);
int min = getMin(arr);
System.out.println("max="+max+";min="+min);
int index = getIndex(arr,
2);
System.out.println("2的index是:"+index);
int[] ary =
{1,3,4,5,6,9};
int index1 = halfSearch1(ary,
6); //折半查找,针对有序的集合
System.out.println(index1);
}
public static int halfSearch1(int[] arr, int
key)
{
int min,max,mid;
min = 0;
max = arr.length - 1;
while (min <=
max)
{
mid = (max +
min) / 2;
if (arr[mid]
> key)
{
max
= mid - 1;
}
else if
(arr[mid] < key)
{
min
= mid + 1;
}
else
return
mid; //能找到,直接返回
}
return -1;
//循环完了还没找到,返回-1.
}
public static int halfSearch(int[] arr, int
key)
{
int min,max,mid;
min = 0;
max = arr.length - 1;
mid = (max + min) / 2;
while (arr[mid] != key)
{
if (key
> arr[mid])
{
min
= mid + 1;
}
else if (key
< arr[mid])
{
max
= mid - 1;
}
if (min
> max)
{
return
-1;
}
mid = (max +
min) / 2;
}
return
mid;
}
public static void printArray(int [] attr)
{
for(int a : attr)
{
System.out.print(a
+ ",");
}
}
public static void selSort(int[] arr)
{
for (int x=0; x
<= arr.length - 1; x++)
{
for (int y =
x+1; y <= arr.length - 1; y++)
{
if
(arr[x] > arr[y])
{
swap(arr,
x, y);
}
}
}
}
public static void bubSort(int[] arr)
{
for (int x = 0; x
<= arr.length - 1; x++)
{
for (int y =
0; y <= arr.length - 1 - x - 1; y++)
{
if
(arr[y] > arr[y+1])
{
swap(arr,
y, y + 1);
}
}
}
}
private static void swap(int[] arr, int x, int
y)
{
int tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
}
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 getIndex(int [] arr, int
key)
{
for (int x = 0; x
< arr.length; x++)
{
if (arr[x] ==
key)
{
return
x;
}
}
return -1;
}
}
{
public static void main(String[] args)
{
int[] arr = {9,3,2,6,4};
//selSort(arr);
//bubSort(arr);
printArray(arr);
int max = getMax(arr);
int min = getMin(arr);
System.out.println("max="+max+";min="+min);
int index = getIndex(arr,
2);
System.out.println("2的index是:"+index);
int[] ary =
{1,3,4,5,6,9};
int index1 = halfSearch1(ary,
6); //折半查找,针对有序的集合
System.out.println(index1);
}
public static int halfSearch1(int[] arr, int
key)
{
int min,max,mid;
min = 0;
max = arr.length - 1;
while (min <=
max)
{
mid = (max +
min) / 2;
if (arr[mid]
> key)
{
max
= mid - 1;
}
else if
(arr[mid] < key)
{
min
= mid + 1;
}
else
return
mid; //能找到,直接返回
}
return -1;
//循环完了还没找到,返回-1.
}
public static int halfSearch(int[] arr, int
key)
{
int min,max,mid;
min = 0;
max = arr.length - 1;
mid = (max + min) / 2;
while (arr[mid] != key)
{
if (key
> arr[mid])
{
min
= mid + 1;
}
else if (key
< arr[mid])
{
max
= mid - 1;
}
if (min
> max)
{
return
-1;
}
mid = (max +
min) / 2;
}
return
mid;
}
public static void printArray(int [] attr)
{
for(int a : attr)
{
System.out.print(a
+ ",");
}
}
public static void selSort(int[] arr)
{
for (int x=0; x
<= arr.length - 1; x++)
{
for (int y =
x+1; y <= arr.length - 1; y++)
{
if
(arr[x] > arr[y])
{
swap(arr,
x, y);
}
}
}
}
public static void bubSort(int[] arr)
{
for (int x = 0; x
<= arr.length - 1; x++)
{
for (int y =
0; y <= arr.length - 1 - x - 1; y++)
{
if
(arr[y] > arr[y+1])
{
swap(arr,
y, y + 1);
}
}
}
}
private static void swap(int[] arr, int x, int
y)
{
int tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
}
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 getIndex(int [] arr, int
key)
{
for (int x = 0; x
< arr.length; x++)
{
if (arr[x] ==
key)
{
return
x;
}
}
return -1;
}
}
相关文章推荐
- (13)数组操作:遍历、输出最大值、冒泡排序、选择排序,java已有的排序方法、折半查找
- 1.数组--最大值 2.数组--选择排序与图解 3.数组--冒泡排序图解 4.数组--1.自带排序2.遍历功能方便 5.数组-常见操作-排序位置置换代码提取
- java类实现数组的五种排序 冒泡排序、选择排序、插入排序、希尔排序、数组排序
- JAVA操作数组----二分查找法,冒泡排序
- Java 中数组的冒泡排序 和 直接选择排序
- Java实现数组排序含冒泡排序、选择排序
- 数组的常见操作:冒泡排序 选择排序与取最值
- 数组的常见操作:冒泡排序 选择排序与取最值
- 【Java】数组的冒泡排序和选择排序(原理+代码实现)
- 数组的常见操作:冒泡排序 选择排序与取最值
- 数组排序-常见操作-选择排序-冒泡排序
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- Java学习笔记(五)--二维数组 冒泡排序 选择排序 Arrays数组工具类
- Java基础04:选择排序;冒泡排序;折半查找;二位数组
- 数组的常见操作:冒泡排序 选择排序与取最值
- 第九、Java数组的常见操作(冒泡、选择排序、数组翻转)
- 数组的常见操作:冒泡排序 选择排序与取最值
- java实现数组的冒泡排序、选择排序代码
- C语言学习笔记:17_数组-一维数组(基本操作,选择和冒泡排序,斐波那契数列)
- 数组的常见操作:冒泡排序 选择排序与取最值