学习笔记之for循环if循环小练习
/*在这五个数字的后面加上任意数字*/
1 var a =[7,12,16,20,25]; 2 var b =prompt(); //定义想再加的数为b,这样就可以在前端输入任意一个数字*/ 4 for(i=0;i<a.length;i++) 5 { 6 if(a[i]==b) /*之前一直想的是当b不等于a中的任意数,其实也可以当b等于a中数时跳出*/ 7 { 8 break; 9 } 10 if(i=a.length-1) /*长度是指这里有几个数就是几个长度,这里是5个长度;i表示的是位置,位置是从0开始数起,所以 若想让i到25这个数的位置,则i=4,与长度的关系为:长度-1*/ 11 { 12 a[i+1]=b; 13 } 14 } 15 alert(a);
/*冒泡排序:按照从小到大的顺序排列9,8,7,6,5,4,3,2,1*/
1 var a=[9,8,7,6,5,4,3,2,1];//把数组定义上 2 var b=0; //定义一个中间值,赋予它任意数值都行,因为他会被替代掉。 3 for(i=0;i<a.length-1;i++)//这里的i代表的是纵向对比循环的次数,第一个数9与第二个数8比,8与7比,依次比到最后,一共 4 //比7次,长度是9,所以小于长度减去1是循环7次。 5 {for(l=0;l<a.length-1;l++) //外围是纵向比,里面是横向比 6 { 7 if(a[l]>a[l+1]) 8 { 9 b=a[l]; 10 a[l]=a[l+1]; 11 a[l+1]=b; 12 } 13 } 14 } 15 alert(a); 16 //document.write("<br>");加个空格 17 //document.write(a);把过程写出来
/*在一串数组中查找某个值的位置:1,4,5,3,2,7,6,9*/
1 var a=[1,4,5,3,2,7,6,9]; 2 var b=0;//定义我们想查找的值 3 for(i=0;i<a.length;i++) 4 { 5 if(b==a[i]) 6 { 7 b=i //当b的值等于a里面的数值时,把i的值赋予给b,就不会再走下面不等于的情况 8 alert("索引号"+i); 9 } 10 else if(b==0) 11 { 12 alert("数值不存在!"); 13 break; 14 } 15 }
数组 -- 折半方法查找某个值
//数组的查找操作 class { public static void main(String[] args) { int[] arr = {3,5,1,2,6,11} int index = getIndex (arr,33); System.out.println("index ="+ index); } //有一个有序的数组,如果想要将一个元素插入到该数组汇总,还要保证该数组 //是有序的,如何获取该元素在数组中的位置 //答 ,用折半的方式,如果有这个数则插入这个数的位置,如果没有, //则返回最小角标的位置 //折半第二种方式 poublic static int halfSearch_2 (int[] arr, int key){ int min = 0 ; max = arr.length- 1; mid; while (min <=max){ mid = (max +min) >>1; //也是/2 的意思 if(key > arr[mid]){ min = mid + 1; }else if (key < arr[mid]){ max = mid -1; }else return mid ; } return -1; //如果想要找到插入的位置,就return min ; } //折半查找法,提高效率 //必须保证这个数组是有序的 poublic static int halfSearch(int[] arr, int key){ //传入一个数组名,传入一个要查找的值 //定义数组的三个角标 最小 最大 中间值,用这个来折半查找 int min ,max, mid; min = 0 ; max = arr.length- 1; mid = (max +min )/2; while (arr[mid] != key){ //当想查找的值不等于中间角标对应的值时,进行判断 if (key > arr[mid]){ //当key大于中间角标对应的值时, 最小角标变为中间角标+1.这样下一次想查找 //的值就会从中间角标后面那个角标值开始查找啦 min = mid +1; }else if ( key < arr[mid]){ max = mid - 1;} //下面是判断完成后,可以继续循环查找 if(min > max){ return -1;} mid = (max +min )/2; } return mid; } public static int getIndex(int[] arr, int key ){ for(int x = 0;x<arr.length; x++){ if(arr[x] == key) return x; } return -1; //如果没有找到,则返回-1.用角标-1,表示.因为通常数组角标从0开始 //返回-1表示角标不存在,也就是数不存在.也就是没有找到这种情况 } }
/*求3,5,7在数组中出现的次数
1,4,3,5,9,9,3,2,4,6,2,1,3,5,7,9,0,5,3,5,2,1,5,6,7,8,2,4,6,8,0,5*/
1 var attr = [1,4,3,5,9,9,3,2,4,6,2,1,3,5,7,9,0,5,3,5,2,1,5,6,7,8,2,4,6,8,0,5,7,4,6,2,6,]; 2 var c3 = 0; 3 var c5 = 0; 4 var c7 = 0;//定义数组,定义我们想查的数的次数,给他们一个初始值,可以用switch,也可以用if做 5 for(var i=0;i<attr.length;i++) 6 { 7 switch(attr[i]) 8 { 9 case 3://这里写条件,代表:如果数值等于3 10 c3++;//每循环一次,次数加一,所以最后输出c3,c5,c7就行了 11 break; 12 case 5: 13 c5++; 14 break; 15 case 7: 16 c7++; 17 break; 18 } 19 } 20 alert(c3); 21 alert(c5); 22 alert(c7);