| 
						
						
						
					 | 
				
				 | 
				
					@ -0,0 +1,28 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# coding: utf-8 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# In[2]: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					alist = [54,26,93,17,77,31,44,55,20] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def shellSort(alist): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    sublistcount = len(alist)//2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    while sublistcount > 0: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for startposition in range(sublistcount): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            gapInsertionSort(alist,startposition,sublistcount) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sublistcount = sublistcount // 2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return alist | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def gapInsertionSort(alist,start,gap): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for i in range(start+gap,len(alist),gap): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        currentvalue = alist[i] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        position = i | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        while position>=gap and alist[position-gap]>currentvalue: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            alist[position]=alist[position-gap] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            position = position-gap | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        alist[position]=currentvalue | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					print(shellSort(alist)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 |