首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的错误选择排序

Python中的错误选择排序
EN

Stack Overflow用户
提问于 2016-05-30 03:46:55
回答 1查看 65关注 0票数 1

对于一个简单的多维数组,我有一个问题。

Python代码是:

SelectionSort.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
7 3 1 9 4
2 1 10 4 9
12 4 23

问题是文件的输出是:(排序矩阵应该位于文件的末尾,如下所示) Matrice.txt

代码语言:javascript
运行
复制
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“变量搞错了。我是一个初学者,任何帮助都是非常感谢的!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 03:58:40

sort方法有一个小错误,它比较循环计数器j和最小值。如果您做了以下更改,它将修复此问题:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37517314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档