在每个mathix之后,打印**无**。为什么?

时间:2014-05-23 08:31:17

标签: python sorting python-2.7

我编写了程序,它是一个多个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

在每个矩阵之后,打印。为什么呢?

1 个答案:

答案 0 :(得分:2)

替换

print "Исходная матрица:\n", printMathix(M)

print "Исходная матрица:\n"
printMathix(M)

否则,您打印的是printMathix的返回值,(隐式)为None