题目分析来自“待字闺中”微博公众平台。
一个数组,arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'],变换为:arr = ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4']
第一次使用Python编写程序,肯定有许多不妥的地方。
第一种方法:
__author__ = 'ledao' arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'] length = len(arr) halfLen = length/2 counter = halfLen-1 for i in xrange(halfLen, length-1): local_counter = counter counter -= 1 if -1 == counter: break local_index = i while local_counter > 0: val = arr[local_index] arr[local_index] = arr[local_index-1] arr[local_index-1] = val local_index -= 1 local_counter -= 1 print arr
第二种方法:
__author__ = 'ledao' arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5'] length = len(arr) halflen = length/2 for i in xrange(1, halflen): for j in xrange(0, i): local_val = arr[halflen+i-1-2*j] arr[halflen+i-1-2*j] = arr[halflen+i-1-2*j-1] arr[halflen+i-1-2*j-1] = local_val print arr
第三种方法:
__author__ = 'ledao' arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5'] def finalIndex(old_index, halflen): return (2*old_index)%(2*halflen-1) length = len(arr) modified = ['False']*length for i in xrange(0,length-1): if modified[i] == 'False': firstIndex = i stored_val = arr[firstIndex] while True: local_value = stored_val if modified[firstIndex] == 'False': modified[firstIndex] = 'True' else: break; local_finalIndex = finalIndex(firstIndex, length/2) stored_val = arr[local_finalIndex] arr[local_finalIndex] = local_value firstIndex = local_finalIndex print arr
第四种方法由于水平有限,没看懂……T-T,讲解连接如下,请教高手!
http://www.newsmth.net/bbscon.php?bid=1032&id=47005