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

本文详细介绍了Java中数组的排序、查找、反转及数据的十进制转八进制、十六进制和二进制的方法。通过具体示例展示了冒泡排序、选择排序、折半查找和数组反转等操作,同时阐述了如何使用API实现整数在不同进制间的转换。文章旨在为Java开发者提供实用的数组操作技巧和数据转换知识。
摘要由CSDN通过智能技术生成
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]);
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值