5、数组(下)

1、数组里面存数组

image

            var num1 = 10;
			var str = "hello";
			var isYes = true;
			var arr1 = [10, 20, 30,[50, 60]];
			var arr = [num1, str, isYes, arr1];

			// alert(arr[3][2]);
			// alert(arr[3][3][1]);


			// alert(arr); //10,hello,true

			// alert(arr[3]);
			/*var tmpArr = arr[3];
			alert(tmpArr);
			alert(tmpArr[1]);
			alert(arr[3][1])*/

【注】在数据中的元素,可以存储任意数据类型的数据。

2、二维数组 习题

  通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。

                1、声明数组arr  一共  五个元素  这五个元素都是数组
				2、下标为0的这个元素  arr[0] = [1, 2, 3, 4, 5];
			/*	arr[0] = [1, 2, 3, 4, 5];
				arr[1] = [6, 7, 8, 9, 10];
				arr[2] = [11, 12, 13, 14, 15];
				arr[3] = [16, 17, 18, 19, 20];
				arr[4] = [21, 22, 23, 24, 25];
			*/
			var arr = [];
			var tmp = 1; //用于累加的数 1 -> 25
			for(var i = 0; i < 5; i++){
				var newArr = [];
				//给newArr填充五个数据
				for(var j = 0; j < 5; j++){
					newArr.push(tmp++);
				}
				arr.push(newArr);
				//arr[[], [], [], [], []];
			}

			// alert(arr[0]);


			for(var i = 0; i < arr.length; i++){
				//1、分别输出每一个arr中元素,并换行
				// document.write(arr[i]);
				
				//2、将tmpArr中的每一个数输出
				for(var j = 0; j < arr[i].length; j++){
					if(j <= i){
						document.write(arr[i][j] + "&ensp;");
					}
				}


				document.write("<br />");
			}
			
			
			
			/*
				1、求数组中所有元素的和;
				2、让数组中的元素交换位置(重要) arr[1] arr[3]交换值;
				3、求数组的最大数和最小数(重要) max   min
				4、求数组的最小数的下标(重要)index
			*/

			var arr = [4, 5, 2, 3, 1];
			var sum = 0;
			for(var i = 0; i < arr.length; i++){
				sum += arr[i];
			}
			// alert(sum);

			var tmp = arr[1];
			arr[1] = arr[3];
			arr[3] = tmp;
			// alert(arr); //1,2,5,4,3


			// 最大数
			var max = arr[0]; //假设第一个元素,最大
			var min = arr[0]; //假设第一个元素,最小
			var index = 0;
			for(var i = 1; i < arr.length; i++){
				/*if(arr[i] > max){
					max = arr[i];
				}*/
				if(arr[i] < min){
					min = arr[i];
					index = i;
				}
			}

			// alert(max);
			alert(min);
			alert(index);

3、排序

/*
reverse()
直接将原数组逆序。直接修改了原数组。
格式:数组.reverse();
*/

		/*var arr = [30, 20, 10, 5, 50, 100];
		arr.reverse();
		alert(arr); //100,50,5,10,20,30*/

/*
sort()
排序
数组.sort(); 升序。
【注】不好用,默认是使用字符串排序。所以我们不用。
*/

	/*      var arr = [5, 4, 3, 7, 8, 9];
		arr.sort();
		alert(arr); //3,4,5,7,8,9*/

		var arr = [5, 15, 10, 1];
		arr.sort();
		alert(arr); //1,10,15,5

4、冒泡法

/*
数据结构:数据排序算法。
冒泡排序
选择排序(固定写法)
*/

/*
冒泡排序的思路:
思路:输入6个无序的数字,从头到尾依次比较相邻两个数字大小,若大数在前、小数在后,则交换两数位置,依次比较,使全部数据按从小到大排列。

			一共有6个数,比较5轮。

			第一轮: 5次
				9, 8, 7, 6, 5, 4
				8, 9, 7, 6, 5, 4
				8, 7, 9, 6, 5, 4
				8, 7, 6, 9, 5, 4
				8, 7, 6, 5, 9, 4
				8, 7, 6, 5, 4, 9
			第二轮: 4次
				8, 7, 6, 5, 4
				7, 8, 6, 5, 4
				7, 6, 8, 5, 4
				7, 6, 5, 8, 4
				7, 6, 5, 4, 8
			第三轮:3次
				7, 6, 5, 4
				6, 7, 5, 4
				6, 5, 7, 4
				6, 5, 4, 7
			第四轮: 2次
				6, 5, 4
				5, 6, 4
				5, 4, 6
			第五轮:1次
				5, 4
				4, 5
		*/

		var arr = [9, 8, 7, 6, 5, 4];

		//  冒泡排序
		//1、确定比较多少轮 = 数组长度 - 1;
		for(var i = 0; i < arr.length - 1; i++){
			//2、这一轮比较的次数 = 数组长度 - 当前轮数(i + 1);
			for(j = 0; j < arr.length - (i + 1); j++){
				if(arr[j] > arr[j + 1]){
					//交换两个数的位置
					var tmp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = tmp;
				}
			}
		}
		alert(arr); //4,5,6,7,8,9

5、选择排序

/*
选择排序

			打擂台法:
			 将每一个擂台拿出来,跟后面所有的元素,进行比较,符合交换条件,交换位置。

		第一轮:  五次
			 9, 8, 7, 6, 5, 4
			 8, 9, 7, 6, 5, 4
			 7, 9, 8, 6, 5, 4
			 6, 9, 8, 7, 5, 4
			 5, 9, 8, 7, 6, 4
			 4, 9, 8, 7, 6, 5
		第二轮:  四次
			    9, 8, 7, 6, 5
			    8, 9, 7, 6, 5
			    7, 9, 8, 6, 5
			    6, 9, 8, 7, 5
			    5, 9, 8, 7, 6

		第三轮:  三次
			       9, 8, 7, 6
			       8, 9, 7, 6
			       7, 9, 8, 6
			       6, 9, 8, 7

		第四轮:  二次
			          9, 8, 7
			          8, 9, 7
			          7, 9, 8

		第五轮:  一次
			             9, 8
			             8, 9

			【注】选择,自己尝试编写。
		*/
		var arr = [9, 8, 7, 6, 5, 4];
		for(var i = 0; i < arr.length - 1; i++){
			for(var j = i + 1; j < arr.length; j++){
				if(arr[i] > arr[j]){
					var tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
				}
			}
		}

		alert(arr); //4,5,6,7,8,9

6、join

/*
功能:将数组 => 字符串
将数组中的元素拼接成字符串
格式:数组.join("字符串");
值:拼接成的字符串
不改变原数组
*/

        var arr = [1, 2, 3, 4, 5];
		var str = arr.join("+");
		// alert(str);//1+2+3+4+5


		/*
			1、随机给出一个五位以内的数,然后输出该数共有多少位,每位分别是什么
		*/
		var num = 12345;
		/*
			将数字num的每一位取出。

						
		*/
		var arr = []; //用来存储取下来的每一位。
		while(1){
			if(num == 0){
				break;
			}
			//个位如何取
			arr.push(num % 10);
			num = parseInt(num / 10);
		}
		arr.reverse();
		alert(arr.length);

7、join进阶

/*
功能:将数组 => 字符串 将数组中的元素拼接成字符串
格式:数组.join("字符串");
值:拼接成的字符串
*/

		var arr = [1, 2, 3, 4, 5];
		var str = arr.join("+");
		// alert(str);//1+2+3+4+5


		/*
			1、随机给出一个五位以内的数,然后输出该数共有多少位,每位分别是什么
		*/
		var num = 12345;
		/*
			将数字num的每一位取出。

						
		*/
		var arr = []; //用来存储取下来的每一位。
		while(num){
			//个位如何取
			arr.push(num % 10);
			num = parseInt(num / 10);
		}
		arr.reverse();
		alert(arr.length);
posted @ 2018-07-06 20:44  飞刀还问情  阅读(294)  评论(0编辑  收藏  举报