对于一个简单的多维数组,我有一个问题。
Python代码是:
SelectionSort.py
class SelectionSort(object):
@staticmethod
def sort(list):
for i in range(0, len(list)):
min = i;
for j in range (i+1, len(list)):
if j < list[min]:
min = j;
tmp = list[min];
list[min] = list[i];
list[i] = tmp;
return list;
MatriceSelectionSort.py
import sys;
import traceback;
import re;
from SelectionSort import SelectionSort;
class MatriceSelectionSort(object):
def run(self):
if len(sys.argv) < 2:
print("Missing fileName arg! Examplu de rulare: python MatriceSelectionSort C:\\wsmt\\matrice.txt\n");
sys.exit(1);
fileName = sys.argv[1];
try:
matrix = self.readMatrix(fileName);
for row in matrix:
SelectionSort.sort(row);
self.writeResult(fileName, matrix);
except Exception as e:
print("Nu pot citi/parsa fisierul\n");
traceback.print_exc();
def readMatrix(self, fileName):
matrix = [];
with open(fileName, "r") as file:
for line in file:
row = [];
tokens = re.split("\s+", line);
for token in tokens:
if token:
row.append(int(token));
matrix.append(row);
return matrix;
def writeResult(self, fileName, matrix):
with open(fileName, "a") as file:
file.write("\n\n"); # python will translate \n to os.linesep
for row in matrix:
for item in row:
file.write(str(item) + " ");
file.write("\n");
if __name__ == '__main__':
MatriceSelectionSort().run();
Matrice.txt
7 3 1 9 4
2 1 10 4 9
12 4 23
问题是文件的输出是:(排序矩阵应该位于文件的末尾,如下所示) Matrice.txt
7 3 1 9 4
2 1 10 4 9
12 4 23
1 4 3 7 9
1 2 4 9 10
23 12 4
所以,这不是世界上最好的那种..。我认为问题是在SelectionSort.py文件中,我把“长”和"i“变量搞错了。我是一个初学者,任何帮助都是非常感谢的!谢谢!
发布于 2016-05-30 03:58:40
sort
方法有一个小错误,它比较循环计数器j
和最小值。如果您做了以下更改,它将修复此问题:
def sort(list):
for i in range(0, len(list)):
min = i;
for j in range (i+1, len(list)):
if list[j] < list[min]: # Instead of if j < list[min]:
min = j
tmp = list[min]
list[min] = list[i]
list[i] = tmp
return list
https://stackoverflow.com/questions/37517314
复制相似问题