ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

冒泡排序和稀疏数组

2021-08-06 09:31:53  阅读:154  来源: 互联网

标签:int 稀疏 冒泡排序 System ++ a2 数组 out


冒泡排序

双层循环,外层冒泡轮数,内层依次比较

public class B {
	
	public static void main(String[] args) {
		int[] a= {12,45,65,21,89};
		System.out.pr
            intln(Arrays.toString(sort(a)));
	}
	
	 /*冒泡排序
	 *比较数组中两个相邻的元素,如果第一个数大于第二个数,就交换位置
	 *每一次比较都会产生出一个最大或者最小的数字
	 *下一轮就少一次排序
	 *依次循环,直到结束
	 */
	public static int[] sort(int[] a) {
		int t=0;
		for (int i = 0; i < a.length-1; i++) {
			for (int j = 0; j < a.length-1-i; j++)
            {
				if(a[j+1]>a[j]) {
					t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
			}
		}
		return a;
	}
}

稀疏数组

数组中大部分元素为相同数值

处理方式:记录数组中有几行几列,有多少个不同的数值

把具有不同数值的元素和行列和值记录在一个小规模的数组中,从而缩小程序的规模

public static void main(String[] args) {
		int[][] a1=new int[11][11];
		a1[1][2]=1;
		a1[2][3]=1;
		//输出原始数组
		for(int[] ints:a1) {
			for(int anInt:ints) {
				System.out.print(anInt+" ");
			}
			System.out.println();
		}

		System.out.println("=================");
		//转换为稀疏数组
		//获取有效值的个数
		int sum=0;
		for (int i = 0; i < a1.length; i++) {
			for (int j = 0; j < a1.length; j++) {
				if(a1[i][j]!=0) {
					sum++;
				}
			}
		}
		System.out.println(sum);
		System.out.println("=================");
		
		//创建稀疏数组的数组
		int[][] a2=new int[sum+1][3];
		a2[0][0]=11;
		a2[0][1]=11;
		a2[0][2]=sum;
		
		//遍历二维数组,将非零的元素放在稀疏数组中
		int count=0;
		for (int i = 0; i < 11; i++) {
			for (int j = 0; j < 11; j++) {
				if(a1[i][j]!=0) {
					count++;
					a2[count][0]=i;
					a2[count][1]=j;
					a2[count][2]=a1[i][j];
				}
			}
		}
		
		for (int i = 0; i < a2.length; i++) {
			System.out.println(a2[i][0]+" "+a2[i][1]+" "+a2[i][2]);
			System.out.println();
		}
	}
//还原稀疏数组
		
		int[][] a3=new int[a2[0][0]][a2[0][1]];
		
		for (int i = 1; i < a2.length; i++) {
			for (int j = 0; j < 3; j++) {
				a3[a2[i][0]][a2[i][1]]=a2[i][2];
			}
		}
		
		for(int[] ints:a3) {
			for(int anInt:ints) {
				System.out.print(anInt+" ");
			}
			System.out.println();
		}
	}

输出结果:

0 0 0 0 0 0 0 0 0 0 0 
0 0 1 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
=================
2
=================
11 11 2

1 2 1

2 3 1

0 0 0 0 0 0 0 0 0 0 0 
0 0 1 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 

标签:int,稀疏,冒泡排序,System,++,a2,数组,out
来源: https://www.cnblogs.com/jiayibingi/p/15107086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有