学习笔记之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);
原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/7698832.html