1. 程式人生 > >for迴圈巢狀的使用

for迴圈巢狀的使用

雙重迴圈排序

    雙重迴圈排序演算法是一種非常簡單的排序演算法,這種演算法很容易讓人理解,也很實用,但是排序的效率很低。基本思路是用第一個數與後面的所有數進行比較,然後把最小的數放到第一個位置,然後用第二個數與後面的所有數進行比較,然後把第二個最小的數放到第二個位置,然後用第三個數....最後用倒數第二個數進行比較,這樣最終形成從小到大的排列順序。

雙層for迴圈 外層是迴圈次數,內層是比較次數

    int i, j, t;
    int a[10] = {2, 5, 8, 1, 3, 4, 7, 9, 0, 6}; // 共10個數據 
    // 雙重for迴圈排序 
    for(i=0; i<9; i++) // 從第1個到第9個
    {
         for(j=i+1; j<10; j++) // 將a[i]和後面的所有數進行比較 
        {
           if(a[i]>a[j]) // 如果a[i]大於後面的數則進行交換 
           {
               t=a[i];
                a[i]=a[j];
                a[j]=t;
          }
        }
 }

假設有10個數,則需要進行10-1趟(即9趟)比較,每趟從第一個數開始與後面相鄰的一個數比較,如果前面的數比後面相鄰的數大則相互交換,經過一趟比較之後,最大的那個數被放在最後面。然後進行下一趟比較,又從第一個數開始比較,但不包括前面一趟已經找出來的那個最大的數,因此下一趟要比前一趟比較的次數少一次。可見這種演算法每進行一趟後會把本趟最大的數“升到”末尾,如氣泡一樣逐步升出水面,故稱為“冒泡法”或“起泡法”。

      // 氣泡排序 
     for(i=0; i<9; i++) // 總共需要比較9趟
     {
         for(j=0; j<9-i; j++) // 只需比較前面的數,最後的是最大數,第一趟i為0時比較9次,第二趟比較8次,第三趟比較7次....
        {
            if(a[j]>a[j+1]) // 如果a[j]大於後面相鄰的一個數則進行交換 
            {
                t=a[j];
               a[j]=a[j+1];
              a[j+1]=t;
           }
       }
     }

java一般通過foreach的方式進行遍歷

		Map<String, List<String>> maps = new HashMap<String, List<String>>();
		List<String> yearCovlist = new ArrayList<String>();
		List<String> orglist = new ArrayList<String>();
		String[] orgString = {"001001","001002","001003","001004","001005","001006"};
		List<PipeVO> rushCount = pipeMapper.showPipeList(vo);

		List<PipeVO> zeroString = new ArrayList<PipeVO>();
		for (String  code : orgString) {
			boolean hasCde = false;
			for (PipeVO pipeVO : rushCount) {
				if(code.equals(pipeVO.getDepOrder())) {
					zeroString.add(pipeVO);
					hasCde = true;
					break;
				}
			}
			if(!hasCde) {
				PipeVO temp  = new PipeVO();
				temp.setDepOrder(code);
				temp.setDayCovRate("0");
				temp.setRunUser("1");
				zeroString.add(temp);
			}
		}


//		for(int j = 0;j<stringArray.size();j++) {	
//			for(int m=0;m<rushCount.size();m++) {
//				if(!rushCount.get(m).getDepOrder().equals(stringArray.get(j))) {
//					break;
//				}
//			}
//			
//		}

識別符號主要判斷的是是否要執行操作,根據條件判斷要不要進入執行執行某個方法

內層for迴圈的if主要根據固定的陣列值進行判斷,通過外層的for迴圈取值與內層的for迴圈所有值進行比對。判斷的是三種情況的條件,第一種是外層的值和內層所有值中某一個相等,第二種,外層的值和內層其他不相等的值,第三種是外層的值與內層的所有值都不相等的情況

js的雙層for迴圈

js一般通過for in的方式進行遍歷

	$.ajax({
		type : "post",
		url : CONTEXT_PATH + '/cusviews/produce/showProduceList',
		data : {},
		success : function(data){
			
			var result = jQuery.parseJSON(data);
			var names = ["0:帶氣接切線","1:啟箱通氣","2:更換裝置","3:加拆盲板","4:戶內立管停氣"];
			var rlt = {
					"data" : []
				};
			for (var key in result.workTypelist){
			for (var i = 0, len = names.length; i < len; i++){
                var nItem = names[i], noKey = nItem.split(":")[0], nVal = nItem.split(":")[1];
                 if(key==noKey){
                	 var obj = {};
					 obj.value = result.Numlist[key], obj.name = nVal;
					 rlt.data.push(obj);
                 }    
				}
				}	
			renderPies(rlt);
		}
	});