黑马程序员__java(4)__数组与排序

本文介绍Java中数组的基本操作,包括数组遍历、选择排序及冒泡排序的实现方式,并展示了如何进行不同进制之间的数值转换。








 ------- android培训java培训、java学习型技术博客、待与您交流! ----------




数组


◆数组的遍历:


列题: ↓↓

package Jichu;

//程序功能 定义一个功能 打印数组中的元素、中间用,号隔开

public class ShuZuDemo1 {
	
	public static void main(String[] args) {
	
	int[] arr = {3,5,6,7,8,9,12};
	
	ShuZu(arr); //进行调用
	}
 


public static void  ShuZu(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]+"]");
			
		}
	}
	
}
}



◆数组的排序



列选择排序:↓↓



 



package Jichu;

/*
 * 
 * 程序功能 选择排序的操作 
 * 
 * 
 * */
 

//选择排序的特点、每进行一次排序最值出现在头角标位置上 

public class PaixuDemo1 {

	/**
	 * @param args
	 */
	
	
	public static void main(String[] args)
	{
		int[] arr = {5,1,6,4,2,8,9};
		//排序前;
		printArray(arr);

		//排序
	    xzpx(arr);
	

		
		//排序后:
		printArray(arr);
			
	}

	public static void printArray(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.println(arr[x]+"]");

		}		
	}




public static void xzpx(int[]arr)
{
	for(int x=0;x<arr.length;x++)  //获取角标的元素
	{
		for(int y=x+1;y<arr.length;y++)
			{
			
			  if(arr[x]>arr[y])//用0角标的元素去和内循环的角标相比较
			  {
				  int temp = arr[x]; //用一个变量记录相比较数组的最大值
				  arr[x]=arr[y]; //由于进行了大小比较所以进行位置互换
				  arr[y]=temp; //进行位置互换 
				  
				
				  
				 
			  }
			}
			}
}
}



冒泡排序:↓







package Jichu;

public class PaiXuDemo2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] arr = {5,1,6,4,2,8,9};
		//排序前;
		printArray(arr);

		//排序
	    mp(arr);
	

		
		//排序后:
		printArray(arr);
			
	}

	public static void printArray(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.println(arr[x]+"]");

		}		
	}




	



public static void mp(int[]arr)
{
	for(int x=0; x<arr.length-1;x++)
	{
		for(int y=0; y<arr.length-x-1;y++)//-x 每一次比较元素减少 -1避免角标越界
		{
			if(arr[y]<arr[y+1])
			{
				int temp = arr[y];
				arr [y] =arr[y+1];
				arr[y+1]=temp;
			}
			
			
		}
	}
}
}



列题:各个进制间的转换


package Jichu;

public class jizhizhuanhuan2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		toBin(-6);  //	十进制转二进制的结果
		
		
		toba(0);   //十进制转八进制 的结果
		
		toHex(60);   	//十进制转换成十六进制的结果

	}

//	十进制转二进制
	public static void toBin(int num)  //定义一个方法 
	{
		jz(num,1,1);
		
	}
	
	
	//十进制转八进制 
	public static void toba(int num) //定义一个方法 
	{
		
		jz(num,7,3);
	}
	
	
	//十进制转换成十六进制
	
	public static void toHex(int num) //定义一个方法 
	{
		
		jz(num,15,4);
	}
	public static void jz(int num,int y,int p)//与上的数 y 偏移位 p
	{
		if (num ==0);
		{
		System.out.print("该进制的值为0");
		}
		
		char [] ch ={'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; //定义一个操作数组的指针
		
		while(num!=0)
		{
			int temp = num & y;
			
			arr[--post] = ch[temp];
			
			num = num >>>p; //进行位移
			
			
		}
		
		for(int x=post;x<arr.length;x++)
		{
			System.out.print(arr[x]);
		}
		System.out.println();
		
	}
}










  ------- android培训java培训、java学习型技术博客、待与您交流! ----------
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索局部开发之间实现平衡。文章详细解析了算法的初始化、勘探开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOAMOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值