题解 | #图片整理#

图片整理

http://www.nowcoder.com/practice/2de4127fda5e46858aa85d254af43941

冒泡排序

从左到右,依次比较相邻元素的大小,x[i+1]比x[i]小,则二者交换位置,如此往复,一次遍历之后,最大元素在最右侧;第二次遍历,则只需遍历前len - 1个元素即可,以此类推

def mpao_sort(a):
b = list(a)
for i in range(len(b)-1):
for j in range(len(b) - i-1):
if ord(b[j+1]) < ord(b[j]):
b[j+1], b[j] = b[j], b[j+1]
print(''.join(b))

L = []
while True:
try:
L.append(input())
except:
break
for i in range(len(L)):
mpao_sort(L[i])

快速排序

选择第一个元素为主元,分别设置左右标兵位置为序列的开头和结尾,r向左依次移动,直到找到比主元小的元素,l依次向右移动,直到找到比主元大的元素,判断如果l<r,则交换二者的位置,然后继续寻找;如果l>=r,则交换r所在位置元素和主元; 然后采用递归,依次对主元两侧元素进行上述同样的操作

def quicksort(array, beg, end):
if beg < end:
pivot_index = beg
pivot = ord(array[beg])
left = beg
right = end
while left < right:
while ord(array[right]) >= pivot and left < right:
right -= 1
while ord(array[left]) <= pivot and left < right:
left += 1
if left < right:
array[left], array[right] = array[right], array[left]
if pivot_index < right:
array[pivot_index], array[right] = array[right], array[pivot_index]
quicksort(array, beg, right-1)
quicksort(array, right+1, end)

L = []
while True:
try:
L.append(input())
except:
break
for i in range(len(L)):
a = list(L[i])
quicksort(a, 0, len(L[i])-1)
print(''.join(a))

选择排序

共遍历n-1次,每次从未排序的元素中,找到最小值,然后跟未排序的序列第一个元素交换位置,以此类推

def selection_sort(array):
for i in range(len(array)):
min_index = i
for j in range(i+1,len(array)):
if ord(array[j]) < ord(array[min_index]):
min_index = j
if min_index != i:
array[i], array[min_index] = array[min_index], array[i]
print(''.join(array))

L = []
while True:
try:
L.append(input())
except:
break
for i in range(len(L)):
a = list(L[i])
selection_sort(a)

全部评论

相关推荐

投递Momenta等公司10个岗位 > 秋招joker 简历被挂麻了,求建议
点赞 评论 收藏
分享
宝宝巴逝:给他一巴掌看他还发不发癫
点赞 评论 收藏
分享
现在进来个骚扰电话,我都会激动的以为是hr电话
阿杰阿杰:是这样的 有的时候还担心HR电话被标记为诈骗电话 还不放心 得接一下
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务