排序

排序:

1)冒泡排序:就是每趟从待排序的数组中比较相邻两个数字的大小,将数字小的放在前面,数字大的放在后面;重复第一趟的操作,直到完成排序为止。

public static void main(String [] args) {
		int [] a= {3,2,1,5};
		for(int i=a.length-1;i > 0; i--) {      //外层循环控制的是循环次数
			for(int j=0;j < i;j++) {            //内层循环控制每一趟排序多少次
				if(a[j] > a[j+1]) {
					int temp = a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
				
			}
		}	
		for(int b:a) {       //增强for循环数组出来的每一个元素赋值打印
			System.out.print(b+" ");
		}
		System.out.println();
	}
}

增强For循环写法

for(int b:a)  a数组中的每一个元素赋值b

2)选择排序:就是每次从一组待排序的数组中找到最小值(或最大值)然后与该序列的起始位置进行替换,以此类推,直到待排序的数组排序好为止。

public static void main(String [] args) {
		int [] a={1,3,2,4};
		System.out.println("选择排序前的顺序:");
		for(int num:a) {                       //增强for循环打印未排序的结果
			System.out.print(num+" ");
		}
		for(int i=0;i < a.length; i++) {       
			for(int j=i;j < a.length;j++) { 
				if(a[i] > a[j]) {
					int temp=a[i];					
					a[i]=a[j];
					a[j]=temp;
				}
			}
		}
		System.out.println();
		System.out.println("选择排序后的顺序:"); //增强for循环打印排序好的结果
		for(int ii:a) {			
			System.out.print(ii+" ");
		}
	}

折半查找(halffond):在有序的数列中,进行二分法查找,每次取出搜索范围的中间值进行比较,依法再进行范围的缩小,知道找出所需要的值。

public static void main(String[] args) {
		int [] a = {1,2,3,4,5,6,7,8,9};
		int max = a.length-1;
		int min = 0;
		int num = 8;
		int index = -1;
		while(min <= max) {           //判断这个数组是否有效
			int mid =(max + min) / 2; // 取这个数组的中间值	  	
			if(a[mid] == num) {       // 判断中间值是不是我要找的值,如果是赋值给index返回。
				index = mid;
				break;
			}
			else if(a[mid] > num) {   //如果这个值小于我们取的中间值,左半区0-{mid-1}去折半找
				max = mid - 1;
			}
			else {
				min=mid + 1;         //如果大于这个值从右半区找中间值加1,到max
			}
		}
		System.out.println(index);
	}

 

二维数组赋值:

public static void main(String[] args) {	
		int [] [] a = new int [3][3];
		int no = 1;                          //赋值
		for(int i = 0;i < a.length;i++) {    
			for(int j = 0;j < 3;j++) {
				a[i][j] = no;
				no++;
			}
		}
        //打印
		outArr(a);
	}
		public static void outArr(int [][] a) {
			for(int i = 0;i < a.length;i++) {
				for(int j =0;j < a[i].length;j++) {
					System.out.print(a[i][j]+" ");
				}
				System.out.println();
			}
		}

 

public static void main(String [] args) {
		int[] a= {1,2,3};                    //数组a和数组b
		int[] b=new int[2];
		arrayCopy(a,b);                       //调用方法
	}
	public static void arrayCopy(int [] a,int[] b) {
		if(a.length >= b.length) {                     //判断a数组的长度是不是大于等于b的长度
			for(int i=0;i < b.length;i++) {            //如果大于等于b的长度截取赋值
				b[i]=a[i]; 
			}
		}
		else{                                          //如果a小于b长度  环绕赋值
				for(int i=0;i < b.length;i++) {
					b[i]=a[i%(a.length)];
				}
			}
		for(int i=0;i < b.length;i++) {
				System.out.print(b[i]+" ");
			}
		}
	}

横向打印三维数组:

public static void out3D() {                           //函数out3D
		int [][][] a = {{{1,2,3},{4,5,6},{7,8,9}},
				        {{10,11,12},{13,14,15},{16,17,18}},
				        {{19,20,21},{22,23,24},{25,26,27}}};
		//循环行数
		for(int j = 0; j < a[0].length; j++) {
			//输出每一行
			for(int i = 0;i <a.length;i++) {
				for(int k = 0;k < a[i][j].length;k++) {
					System.out.print(a[i][j][k] + " ");
				}
				System.out.print("  ");
			}
			System.out.println();
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值