Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择排序-python_Python_Algorithm_Sorting_Selection Sort - Fatal编程技术网

选择排序-python

选择排序-python,python,algorithm,sorting,selection-sort,Python,Algorithm,Sorting,Selection Sort,我似乎无法使我的选择排序工作。知道怎么了吗?当运行时,它会给我[5,6,3,1] 谢谢 aList=[1,5,6,3] def选择_排序(列表): 对于范围内的i(len(aList)): min=i j=i+1 对于范围内的j(len(aList)): 如果aList[j]

我似乎无法使我的选择排序工作。知道怎么了吗?当运行时,它会给我[5,6,3,1]

谢谢

aList=[1,5,6,3]
def选择_排序(列表):
对于范围内的i(len(aList)):
min=i
j=i+1
对于范围内的j(len(aList)):
如果aList[j]
正如我在评论中提到的,在我看来,您使用了
j=I+1
,希望它能以某种方式影响后续循环中的
j
,但它是一个不同的变量。函数定义中的
aList
也是如此,它可以有任何名称,甚至是aList。你的
j
一次又一次地在整个列表上迭代,因此
min
或最小值会被带到
i
的任何地方(因此它最终结束)。因此,您需要做的是使第二个循环只遍历
i
之后的下一项

aList = [1,5,6,3]

def selection_sort(List):
    for i in range(len(List)):
        min = i
        for k in range(i,len(List)):
            if List[k] < List[min]:
                min = k
        swap(List, min, i)
    print(List)

def swap(List, x, y):
    temp = List[x]
    List[x] = List[y]
    List[y] = temp

selection_sort(aList)
aList=[1,5,6,3]
def选择_排序(列表):
对于范围内的i(len(列表)):
min=i
对于范围(i,len(列表))中的k:
如果列表[k]<列表[min]:
最小=k
交换(列表,最小值,i)
打印(列表)
def交换(列表,x,y):
临时=列表[x]
列表[x]=列表[y]
列表[y]=临时
选择和排序(列表)
def选择排序(l):
对于范围内的i(len(l)):
min_loc=i
对于范围(i+1,len(l))内的j:
如果l[j]
您不需要交换功能
aList[x],aList[y]=aList[y],aList[x]
提示:错误在这一行:
对于范围内的j(len(aList)):
它迭代列表中的哪些元素?设置
j=i+1
并在转到此循环时更改它:
对于范围内的j(len(aList)):
您反复犯的一个错误是,如果变量名相同,它们不一定是同一个变量。@deadcode这是什么意思?你说的是在两个不同的功能中使用的名称
aList
?因为除此之外,没有重复的变量名。@philsegut不客气。如果这回答了你的问题,接受这个答案(点击滴答声)来考虑它已经解决了。
aList = [1,5,6,3]

def selection_sort(List):
    for i in range(len(List)):
        min = i
        for k in range(i,len(List)):
            if List[k] < List[min]:
                min = k
        swap(List, min, i)
    print(List)

def swap(List, x, y):
    temp = List[x]
    List[x] = List[y]
    List[y] = temp

selection_sort(aList)
def select_sort(l):
    for i in range(len(l)):
        min_loc = i
        for j in range(i+1, len(l)):
            if l[j] < l[min_loc]:
                min_loc = j
        l[min_loc],l[i] = l[i], l[min_loc]
    return l