我编写了程序,它是一个多个sposobami排序的随机数组: 泡泡 2.快。 合并。 4.插入。 但面对我不明白的问题。
我不明白为什么打印无。全部
我该如何解决这个问题?
请帮助我解决问题。
# -*- coding: utf-8 -*-
#Программа запрашивает у пользователя размерность
#случайной матрицы. Затем производит сортировку
#методами:
#1. Пузырьком
#2. Вставками
#3. Слиянием
#4. Быструю
import random
import time
def qsort1(list): #Быстрая сортировка
"""Quicksort using list comprehensions"""
start = time.time()
if list == []:
return []
else:
pivot = list[0]
lesser = qsort1([x for x in list[1:] if x < pivot])
greater = qsort1([x for x in list[1:] if x >= pivot])
return lesser + [pivot] + greater
def merge(left, right):
result = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result
def mergesort(list): #сортировка слиянием
star = time.time()
if len(list) < 2:
return list
middle = len(list) / 2
left = mergesort(list[:middle])
right = mergesort(list[middle:])
return merge(left, right)
def sort_numbers(s): #Сортировка вставкой
star = time.time()
for i in range(1, len(s)):
val = s[i]
j = i - 1
while (j >= 0) and (s[j] > val):
s[j + 1] = s[j]
j = j - 1
s[j + 1] = val
return s
def bubble(bad_list): #Пузырек
start = time.time()
length = len(bad_list) - 1
sorted = False
while not sorted:
sorted = True
for i in range(length):
if bad_list[i] > bad_list[i+1]:
sorted = False
bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]
return bad_list
def Matrix(List): #Преобразование матриц из одномерных в дуверные
ft = 0
Mtmp= [ [0 for j in range(stb)] for i in range(strk)]
for x in xrange(0,strk,1):
for y in xrange(0,stb,1):
Mtmp [x][y] = List[ft]
ft+= 1
return Mtmp
def printMathix(List):
for x in xrange(0,strk,1):
print List[x], x
stb = int(raw_input('Введите колличество столбцов: '))
strk = int(raw_input('Введите колличество строк: '))
M2 = []
M = [ [0 for j in range(stb)] for i in range(strk)]
for x in xrange(0,strk,1):
for y in xrange(0,stb,1):
M [x][y] = random.randrange(1,100,1)
for x in xrange(0, strk,1):
for y in xrange(0,stb,1):
M2.append(M[x][y])
print "Исходная матрица:\n", printMathix(M)
start = time.time()
Temp = qsort1(M2[:])
finish = time.time()
print "Результат быстрой сортировки: \n", printMathix(Matrix(Temp))
print "Время работы : ", finish-start
start = time.time()
Temp = mergesort(M2[:])
finish = time.time()
print "Результат сортировки слияние: \n", printMathix(Matrix(Temp))
print "Время работы : ", finish-start
start = time.time()
Temp = sort_numbers(M2[:])
finish = time.time()
print "Результат сортировки вставками: \n", printMathix(Matrix(Temp))
print "Время работы : ", finish-start
start = time.time()
Temp = bubble(M2[:])
finish = time.time()
print "Результат сортировки пузырьком: \n",printMathix(Matrix(Temp))
print "Время работы : ", finish-start
print "Исходная матрица: \n", printMathix(M)
示例:
/usr/bin/python2 /data/MyWork/Scripts/Python/Sorts/Sorts.py
Введите колличество столбцов: 5
Введите колличество строк: 10
Исходная матрица:
[66, 95, 26, 14, 80] 0
[76, 73, 54, 27, 17] 1
[46, 8, 48, 60, 36] 2
[41, 68, 2, 65, 37] 3
[90, 99, 32, 91, 27] 4
[74, 12, 14, 35, 32] 5
[77, 47, 50, 77, 14] 6
[33, 14, 42, 57, 9] 7
[74, 84, 90, 30, 72] 8
[42, 88, 55, 37, 5] 9
None
Результат быстрой сортировки:
[2, 5, 8, 9, 12] 0
[14, 14, 14, 14, 17] 1
[26, 27, 27, 30, 32] 2
[32, 33, 35, 36, 37] 3
[37, 41, 42, 42, 46] 4
[47, 48, 50, 54, 55] 5
[57, 60, 65, 66, 68] 6
[72, 73, 74, 74, 76] 7
[77, 77, 80, 84, 88] 8
[90, 90, 91, 95, 99] 9
None
Время работы : 0.000123977661133
Результат сортировки слияние:
[2, 5, 8, 9, 12] 0
[14, 14, 14, 14, 17] 1
[26, 27, 27, 30, 32] 2
[32, 33, 35, 36, 37] 3
[37, 41, 42, 42, 46] 4
[47, 48, 50, 54, 55] 5
[57, 60, 65, 66, 68] 6
[72, 73, 74, 74, 76] 7
[77, 77, 80, 84, 88] 8
[90, 90, 91, 95, 99] 9
None
Время работы : 0.000236034393311
Результат сортировки вставками:
[2, 5, 8, 9, 12] 0
[14, 14, 14, 14, 17] 1
[26, 27, 27, 30, 32] 2
[32, 33, 35, 36, 37] 3
[37, 41, 42, 42, 46] 4
[47, 48, 50, 54, 55] 5
[57, 60, 65, 66, 68] 6
[72, 73, 74, 74, 76] 7
[77, 77, 80, 84, 88] 8
[90, 90, 91, 95, 99] 9
None
Время работы : 0.000180006027222
Результат сортировки пузырьком:
[2, 5, 8, 9, 12] 0
[14, 14, 14, 14, 17] 1
[26, 27, 27, 30, 32] 2
[32, 33, 35, 36, 37] 3
[37, 41, 42, 42, 46] 4
[47, 48, 50, 54, 55] 5
[57, 60, 65, 66, 68] 6
[72, 73, 74, 74, 76] 7
[77, 77, 80, 84, 88] 8
[90, 90, 91, 95, 99] 9
None
Время работы : 0.000505924224854
Исходная матрица:
[66, 95, 26, 14, 80] 0
[76, 73, 54, 27, 17] 1
[46, 8, 48, 60, 36] 2
[41, 68, 2, 65, 37] 3
[90, 99, 32, 91, 27] 4
[74, 12, 14, 35, 32] 5
[77, 47, 50, 77, 14] 6
[33, 14, 42, 57, 9] 7
[74, 84, 90, 30, 72] 8
[42, 88, 55, 37, 5] 9
None
Process finished with exit code 0
在每个矩阵之后,打印无。为什么呢?
答案 0 :(得分:2)
替换
print "Исходная матрица:\n", printMathix(M)
带
print "Исходная матрица:\n"
printMathix(M)
等
否则,您打印的是printMathix
的返回值,(隐式)为None
。