针对数组进行操作的工具类,提供了排序查找等方法。
??数组高级冒泡排序
? 冒泡排序:相邻的两个数作比较,大的话就交换位置
代码实现
public class maopao {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {24,23,34,10,56,1};
bubblesort(arr);
print(arr);
}
public static void bubblesort(int[] arr) {
int t=0;
for(int i=0;i <arr.length;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
public static void print(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
数组高级选择排序
? ? ? ? 用一个索引位置上的元素依次与其他索引位置上的元素比较小在大的前面
public class choosesort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {43,74,1,23,45,64,233,13};
selectsort(arr);
print(arr);
}
public static void selectsort(int[] arr) {
int t;
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
t=arr[i];
if(t>arr[j]) {
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
public static void print(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
二分查找法(折半查找)
? ? ? ? 前提是数组元素有序
import java.util.Scanner;
public class StringBuffer {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int[] arr ={21,31,41,44,52,65,76,77,87,99,234};
System.out.println("请输入你想要查找的数字:");
int temp = sc.nextInt();
System.out.println(found(temp,arr));
}
public static int found(int temp,int[] arr ) {
int min=0;
int max=arr.length-1;
int mid = (min + max) /2;
while(arr[mid] != temp) {
if(arr[mid]>temp) {
max = mid;
}
else {
min = mid;
}
mid = (max +min) /2;
if(min>max) {
return -1;
}
}
return mid;
}
}
用Arrays类实现
public static String toString(int[] a) //数组转字符串
public static void sort(int[] a) //排序
public static int binarySearch(int[] a,int key) //二分查找
//如果要找的数字没 在数组中返回的是-插入点-1
?
|