您的位置:首页 > 职场人生

黑马程序员(十)数组的简单基本应用(排序,查找,十进制变2,8,16等等)

2014-03-29 23:54 447 查看
package traffic;

import java.util.Arrays;

public class ArrayTest {
public static void main(String[] args){
//int[] arr={1,44,555,677,888,44,2};
//max(arr);//最小值就不演示了。。。同理就行。打印的值是::888
//bubbleSort(arr);//冒泡排序
//secletSort(arr);//选择排序
int[] arr={1, 27, 44, 47, 555, 677, 888};
System.out.println(Arrays.toString(arr));//打印结果:::[1, 2, 44, 44, 555, 677, 888] 排序成功。两种方法都成功
seek(arr,44);//获取到插入角标。。打印结果是::2
seek(arr,14);//获取到插入角标。。打印结果是::1
halfSearch(arr,44);//获取到插入角标。。打印结果是::2
halfSearch(arr,14);//获取到插入角标。。打印结果是::1
upsideSort(arr);
System.out.println(Arrays.toString(arr));//打印结果是[888, 677, 555, 47, 44, 27, 1]成功反转。
int num=189;
System.out.println(Integer.toOctalString(num));//275
trans(num,7,3);//275和上面数据相同。转化8进制成功
System.out.println("");
System.out.println(Integer.toHexString(num));//bd
trans(num,15,4);//BD 和上面数据相同转化成16进制成功
System.out.println("");
System.out.println(Integer.toBinaryString(num));//10111101
trans(num,1,1);//10111101 和上面数据相同。转化成功
}
//简单的数组中的两个值互换方法。
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;

}
//数组。获取最大值。最小值
public static void max(int[] arr){
int temp=arr[0];
for(int x=1;x<arr.length;x++){
if(temp<arr[x])
temp=arr[x];
}
System.out.println(temp);
}
//对数组进行排序.a 方法。冒泡排序
public static void bubbleSort(int[] arr){
for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-1-x;y++){
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
}
//对数组进行排序。。b方法。。选择排序
public static void secletSort(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);
}
}
//给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,这是普通的查找
public static void seek(int[] arr,int num){
int y=0;
for(int x=0;x<arr.length;x++){
if(num>arr[x])
y=x+1;
}
System.out.println(y);
}
//折半查找
public static int halfSearch(int[] arr,int num){
int min=0;
int max=arr.length-1;
int mid;
while(min<=max){
mid=(min+max)/2;
if(num>arr[mid])
min=mid+1;
else if(num<arr[mid])
max=mid-1;
else {
System.out.println(mid);
return mid;
}
}
System.out.println(min);
return min;
}
//将数组进行反转
public static void upsideSort(int[] arr){
for(int x=0;x<arr.length/2;x++){
int temp=arr[x];
arr[x]=arr[arr.length-1-x];
arr[arr.length-1-x]=temp;
}
}
//查表法。。把10进制分别转成16进制。8进制,2进制
public static void trans(int num,int base,int offest){
char[] chem={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr=new char[32];
int post=arr.length;
if(num==0){
System.out.println(0);
return;
}
while(num!=0){
int temp=num&base;
arr[--post]=chem[temp];
num=num>>>offest;
}
for(int x=post;x<arr.length;x++){
System.out.print(arr[x]);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: