欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python的小算法

系統 1615 0

**

1.數組排序

**
對一個數組進行排序,排序需要遵守一些規則:
?先對數組從左到右,相鄰元素進行比較,如果第一個比第二個大,就交換它們,進行一個升序排序;
?再對數組從右到左,相鄰元素進行比較,如果第一個比第二個小,就交換它們,進行一個降序排序;
?以此類推,持續的、依次的改變排序的方向,并不斷縮小沒有排序的數組范圍;

按照這種規則依次給整個數組排序,并將排序過程打印到控制臺。
樣例:
比如給出一組數據 4,1,3,5,2 ,排序過程如下:
4 1 3 5 2
1 4 3 5 2
1 3 4 5 2
1 3 4 2 5
1 3 2 4 5
1 2 3 4 5
最后得到結果: 1 2 3 4 5 。

編程要求

請在右側編輯器中填充代碼,補全 sort(self,xlist) 函數,實現指定的排序功能,并打印出排序過程,函數參數說明如下:

xlist :待排序的數組

注:不需排序的數組(如: 1 2 3 ),直接打印原數組。

思路:雞尾酒排序
Java

            
              public void sort(Integer[] arr){
		/********* Begin *********/
         int i=0;
		boolean flag = false,flag1,flag2;
		for(i = 0; i < arr.length-1; i++){
			if(arr[i] > arr[i+1])
				flag = true;
		}
		if(!flag)
		{
			for(int j = 0; j < arr.length; j++)
					System.out.print(arr[j] + " ");
			System.out.println();
		}
		else{
			while(flag) {
			flag1 =false;flag2 = false;
				for(i = 0; i < arr.length-1; i++){
					if (arr[i+1] < arr[i]){
						int temp = arr[i];
						arr[i] = arr[i+1];
						arr[i+1] = temp;
						flag1 = true;
						for(int j = 0; j < arr.length; j++)
							System.out.print(arr[j] + " ");
						System.out.println();
					}
					
				}
				
				
				for(i = arr.length-1; i > 0; i--){
					if (arr[i] < arr[i-1]){
						int temp = arr[i];
						arr[i] = arr[i-1];
						arr[i-1] = temp;
						flag2 = true; 
						for(int j = 0; j < arr.length; j++)
							System.out.print(arr[j] + " ");
						System.out.println();						
					}
				}
				
				
				flag = flag1 || flag2;
		}}
				
		/********* End *********/	
	}
}

            
          

Python

            
              # -*- coding: utf-8 -*-
class Task:

    def sort(self,xlist):
    #********* Begin *********#
    	the_len = len(xlist)
        flag = False
        for i in range(the_len-1):
        	if(xlist[i] > xlist[i+1]):
				flag = True
        if(not flag):
        	print(" ".join(str(k) for k in xlist))
        else:
			while 1:
            	flag = False
            	for i in range(the_len-1):
                	if xlist[i] > xlist[i+1]:
                    	xlist[i], xlist[i+1] = xlist[i+1], xlist[i]
                    	flag = True
                    	print(" ".join(str(k) for k in xlist))
            	j = the_len-1
            	while j > 0:
                	if xlist[j-1] > xlist[j]:
                    	xlist[j], xlist[j-1] = xlist[j-1], xlist[j]
                    	flag = True
                    	print(" ".join(str(k) for k in xlist))
                	j -= 1
            	if flag == False:
                	break

    #********* End *********#


            
          

2.病毒區域個數

某地區爆發病毒,給定一個矩陣, x 代表隔離墻, o 代表病毒,病毒區域是由它水平方向或垂直方向上相鄰的病毒連接而成,斜角連接不會構成病毒區域。你要計算出矩陣中有幾個病毒區域(假設矩陣周邊是被隔離墻包圍的)。

編程要求

對輸入的矩陣進行計算,返回“病毒區域”的個數,函數參數說明如下:
n :矩陣的行
m :矩陣的列
area :待計算的矩陣
樣例:
輸入:
4 5
x o x x x
x x x o x
x x o o x
x x x x x
輸出: 2

思路一:
除最后一行最后一列,按行按列循環找到是‘o’的位置[i][j] ,然后判斷下方[i+1][j],右方[i][j+1]是否滿足條件,最后一行只查找右方,最后一列只查找右方。

            
              # -*- coding: utf-8 -*-
class Task:

    def virusArea(self,n,m,area):
    #********* Begin *********#
        count = 0
        for i in range(n-1):
            for j in range(m-1):
                if area[i][j] == 'o':
                    if area[i+1][j] == 'o':
                        count += 1
                    if area[i][j+1] == 'o':
                        count += 1
                j += 1
            for i in range(n-1):
                if area[i][j] == 'o':
                    if area[i+1][j] == 'o':
                        count += 1
            i += 1
        for j in range(m-1):
            if area[i][j] == 'o':
                if area[i][j+1] == 'o':
                    count += 1
        return count      
    #********* End *********#

            
          

思路二:
每兩行按列遍歷是否均為‘o’
每兩列按行遍歷是否均為‘o’

            
              # -*- coding: utf-8 -*-
class Task:

    def virusArea(self,n,m,area):
    #********* Begin *********#
    	count = 0
        for i in range(n-1):
        	for j in range(m):
            	if area[i][j] == area[i+1][j] == 'o':
                	count += 1
                j += 1
        	i += 1
        for j in range(m-1):
        	for i in range(n):
            	if area[i][j] == area[i][j+1] == 'o':
                	count += 1
                i += 1
            j += 1
        return count
               
    #********* End *********#

            
          

3.最長凹谷

有一維數組 X = [8,5,1,6,7,7,3,5] ,我們把它畫到坐標系中,其中凹下去的部分我們稱為 X 數組的凹谷數組 Y ,其中凹陷的長度即為凹谷數組的長度( Y 的長度大于 3 ),其中持平的部分不計入凹谷數組的長度。如, X 有兩個凹谷數組 Y1 = [8,5,1,6,7] 和 Y2 = [7,3,5] ,長度分別為 5 和 3 。我們則需要返回這個數組中的最長凹谷數組的長度,即 5 ,如果數組中不含凹谷,則返回 0 。

編程要求
對輸入的數組進行判斷,返回最長“凹谷”的長度,函數參數說明如下:

X :待判斷的數組

思路:尋找一個小凹點,然后逐步往前往后擴大范圍。

            
              # -*- coding: utf-8 -*-
class Task:

    def concaveValley(self,X):
    #********* Begin *********#
        count = 0
        for i in range(1,len(X)-1):
            index1 = 0
            index2 = 0
            if X[i]
              
                0 and X[index1-1]>X[index1]:
                    index1 -= 1
                while index2
                
                  X[index2]:
                    index2 += 1
                if index2-index1+1 > count:
                    count = index2-index1+1
        return count
        
        
        #********* End *********#

                
              
            
          

4.愛心
畫兩個愛心圖案,輸入數字 1 ,出現一個鏤空的心形;輸入數字 2 ,出現一個由字符串 I love you! 組成的心形。

            
              # -*- coding: utf-8 -*-
class Task:

    def love(self,n):
    #********* Begin *********#
    	letterlist = []#letterlist是所有打印字符的總list,里面包含y條子列表list_X
    	for y in range(12, -12, -1):
        	list_X = []#list_X是X軸上的打印字符列表,里面裝著一個String類的letters
        	letters = ''#letters即為list_X內的字符串,實際是本行要打印的所有字符
        	for x in range(-30, 30):#*是乘法,**是冪次方
            	expression = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
            	if expression <= 0:
                	letters += '$'
            	else:
                	letters += ' '
        	list_X.append(letters)
        	letterlist += list_X
    	print('\n'.join(letterlist))
    #********* End *********#

            
          
            
              # -*- coding: utf-8 -*-
class Task:

    def love(self,n):
    #********* Begin *********#
		item = 'I love you!'
		letterlist = []#letterlist是所有打印字符的總list,里面包含y條子列表list_X
    	for y in range(12, -12, -1):
        	list_X = []#list_X是X軸上的打印字符列表,里面裝著一個String類的letters
        	letters = ''#letters即為list_X內的字符串,實際是本行要打印的所有字符
        	for x in range(-30, 30):#*是乘法,**是冪次方
            	expression = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
            	if expression <= 0:
                	letters += item[(x-y) % len(item)]
            	else:
                	letters += ' '
        	list_X.append(letters)
        	letterlist += list_X
    	print('\n'.join(letterlist))
    #********* End *********#

            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人精品免费视频大 | 91久久精品一区二区二区 | 午夜在线视频 | 亚洲欧美精品一区二区 | 一级做a爰片性色毛片视频图片 | 久久久久久久一区二区三区 | 久久两性视频 | 亚洲一一在线 | 国产1级 | 久久久久国产精品免费免费搜索 | 波多野结衣在线网址 | 99久久免费视频在线观看 | 天天视频在线播放观看视频 | 五月婷婷激情第五季 | 国产日本欧美在线观看 | 成人无码T髙潮喷水A片小说 | 亚洲 综合 欧美 动漫 丝袜图 | 天天插天天操 | 日韩精品在线一区 | 欧美激情高清 | 欧美爽爽爽高清免费视频 | 久久综合丁香激情久久 | 日韩精品一区二区三区国语自制 | 欧美在线成人影院 | 天堂资源地址在线 | 一级毛片免费视频 | xxx欧美老熟 | 日韩一级大毛片欧美一级 | 国产色产综合色产在线观看视频 | 小凤仙的故事 电视剧 | 2021精品国产综合久久 | 青娱分类视频精品免费2 | 波多野结在线 | 国产视频网 | 国产成+人+亚洲+欧美+日韩 | 亚洲国产精品成 | 高清国产美女一级a毛片 | 欧美精品一区二区三区在线 | 免费色网址| 精品久久久久久久人人人人传媒 | 精品久久一区二区 |