javaSE---“龟速三兄弟“+二维数组

龟速三兄弟

冒泡排序:

简单来说,就是将数据从用过一遍一遍的前后比较从小到大排列.话不多说,直接举例
静态初始化一维数组{10,20,11,35,6,89},进行冒泡排序

		int[] arr= {10,20,11,35,6,89};
   	for( int i = 0 ; i<arr.length-1  ;i++ ) {//比较次数
   		for( int j=0, b=0;j<arr.length-1  ;j++  ) {//遍历
   			if(arr[j]>arr[j+1]) {//若j>j+1,则交换位置
   				b=arr[j];
   				arr[j]=arr[j+1];
   				arr[j+1]=b;
   			}
   		}
   	}
   	for( int i=0 ; i<arr.length ; i++ ) {
   		System.out.print(arr[i]+" ");
   	}

插入排序

其原理为先假定数组索引0处元素是"有序"的,用后面的元素依次与其比较,若比它小则交换位置,而后索引1与索引2处元素比较,若索2处小于索1处,则交换元素位置,注意,此时索引1处元素还要与索引0处元素比较,若小于,则交换位置. 以此类推 排序代码如下:

		int[] arr = {9,6,45,2,24,36,11};  //定义一个乱序数组
		for( int i = 1 ;i<arr.length ; i++ ) {  //假定第一个元素有序
			if(arr[i]<arr[i-1]) {   //如果当前元素小于前一个元素
				int temp=arr[i];   //则定义一个临时变量,将当前元素存储起来
				int j=i;  //记录当前元素的索引
				while(j>0&&temp<arr[j-1]) {  //该循环的作用是判断当前值是否小于前一个元素
				arr[j]=arr[j-1];             //若小于则交换位置,随着j--,继续与前面元素比较、交换
					j--;//注意最后一次j--   后 j的值
				}
				//
				arr[j]=temp; //插入
				
			 }
			}
			for( int i=0 ; i<arr.length; i++) {
				System.out.print(arr[i]+" ");
		}
选择排序

原理:每一次都选择数组未排列部分中最小的元素放在未排列部分的首位


		int[] arr= {5 , 9 , 7 , 33 , 55, 12};
		for( int i=0 ; i<arr.length ; i++) {
			int minIndex=i;  //先选定未排列部分首个元素的索引当做最小元素的索引
			for( int j =i+1 ; j<arr.length ; j++ ) {
				if(arr[minIndex]>arr[j]) {  //当前元素与后面元素作比较,若后面的小,则更改最小元素索引
					minIndex=j;
				}
			}
			int temp = arr[i];     //最小元素与未排列部分首位交换位置
			arr[i]=arr[minIndex];  //交换后,最小元素最小元素前为排列有序部分,将不参与之后的循环
			arr[minIndex]=temp;    //而后随着i+1,新的首位元素出现,进入下一次循环
			}
			for( int i=0 ;i<arr.length  ; i++ ) {
				System.out.print(arr[i]+" "); 
			}	

二维数组

初始化方法:

//动态初始化:  数据类型[][] 变量名 = new 数据类型[行][列];
//静态初始化:  数据类型[][] 变量名 = {  {元素,元素}, {元素}, {元素,元素,元素}, .......}
动态
int[][] arr = new int[2][3];

就会在内存中开辟一个如下图所示的包含两个一位数组且每个一位数组能存储三个int类型元素的二维数组,他们是包含关系,此时个个位置为int类型默认值0
二维数组
那么想像一位数组那样赋值和取值,该如何确定位置呢? 如下图所示:
二维之位

静态

很简单,这里只类比动态做简单叙述

int[][] arr={ {1,2,3} , {2} ,{1,5,6} }

其效果:
静态2维

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值