我试图使用归并排序和分治法,通过获取用户提供的随机单词来实现。我将用户输入的单词分成两个数组:
import math
inputted_sentence = input("Enter your sentence here: \n")
separated_inputs = [word.lower() for word in inputted_sentence.split()]
inputs_length = int(len(separated_inputs))
#separate the arrays
array_one = (separated_inputs[0:math.floor(int(inputs_length/2))])
array_two = (separated_inputs[math.floor(int(inputs_length/2)):inputs_length])
#grab length of the array
length_array_one = len(array_one)
length_array_two = len(array_two)
接下来,我会对它们进行排序(按字母顺序)
#first array being sorted and stored
for a in range(length_array_one-1):
for b in range(length_array_one-a-1):
if array_one[b] > array_one[b+1]:
array_one[b], array_one[b+1] = array_one[b+1], array_one[b]
sorted_array_one = []
for words in array_one:
sorted_array_one.append(words)
#second array being sorted and stored
for a in range(length_array_two-1):
for b in range(length_array_two-a-1):
if array_two[b] > array_two[b+1]:
array_two[b], array_two[b+1] = array_two[b+1], array_two[b]
sorted_array_two = []
for words in array_two:
sorted_array_two.append(words)
这张图片展示了两个数组:https://istack.dev59.com/9ZrHb.webp 现在我需要比较blue和apple,发现它更小,然后比较blue和cat,发现它更大,并且在最终的数组中占据index[2]。
接下来,rabbit与cat进行比较,它更小,再与dog比较,它更小,所以占据dog之后的数组位置。
编辑:我的第一个版本(下面)能够做到这一点,但它没有利用已排序的数组,而是重新对单词进行排序。
unsorted_final = sorted_array_one + sorted_array_two
length_unsorted_final = len(unsorted_final)
sorted_array_final = []
#Final array sorted and stored
for a in range(length_unsorted_final-1):
for b in range(length_unsorted_final-a-1):
if unsorted_final[b] > unsorted_final[b+1]:
unsorted_final[b], unsorted_final[b+1] = unsorted_final[b+1], unsorted_final[b]
for words in unsorted_final:
sorted_array_final.append(words)
print(sorted_array_final)