( Python ) 你能调换一下选择排序的起始过程吗?
( Python ) Can you swap the starting process of the selection sort?
从求最小值放左边到求最大值放右边
def SelectionSort(a_list):
n = len(a_list)
for i in range(0, n-1):
iMin = i
print(a_list)
for j in range(i+1, n):
if a_list[j] < a_list[iMin]:
iMin = j
temp = a_list[i]
a_list[i] = a_list[iMin]
a_list[iMin] = temp
print()
return a_list
someList = [45,984,6,90,8946,89]
SelectionSort(someList)
是否可以将过程从最小值 => 最大值交换为最小值 <= 最大值
答案应该是这样的。
[6, 45, 89, 89, 984, 8946]
是:
- 将
iMin
重命名为 iMax
- 镜像您使用的两个范围:
range(0, n-1)
变为 range(n-1, 0, -1)
range(i+1, n)
变为 range(i-1, -1, -1)
- 镜像比较运算符
<
变为 >
结果:
def SelectionSort(a_list):
n = len(a_list)
for i in range(n-1, 0, -1):
iMax = i
print(a_list)
for j in range(i-1, -1, -1):
if a_list[j] > a_list[iMax]:
iMax = j
temp = a_list[i]
a_list[i] = a_list[iMax]
a_list[iMax] = temp
print()
return a_list
与您的问题无关(如评论所述),可以这样进行交换:
a_list[i], a_list[iMax] = a_list[iMax], a_list[i]
从求最小值放左边到求最大值放右边
def SelectionSort(a_list):
n = len(a_list)
for i in range(0, n-1):
iMin = i
print(a_list)
for j in range(i+1, n):
if a_list[j] < a_list[iMin]:
iMin = j
temp = a_list[i]
a_list[i] = a_list[iMin]
a_list[iMin] = temp
print()
return a_list
someList = [45,984,6,90,8946,89]
SelectionSort(someList)
是否可以将过程从最小值 => 最大值交换为最小值 <= 最大值
答案应该是这样的。
[6, 45, 89, 89, 984, 8946]
是:
- 将
iMin
重命名为iMax
- 镜像您使用的两个范围:
range(0, n-1)
变为range(n-1, 0, -1)
range(i+1, n)
变为range(i-1, -1, -1)
- 镜像比较运算符
<
变为>
结果:
def SelectionSort(a_list):
n = len(a_list)
for i in range(n-1, 0, -1):
iMax = i
print(a_list)
for j in range(i-1, -1, -1):
if a_list[j] > a_list[iMax]:
iMax = j
temp = a_list[i]
a_list[i] = a_list[iMax]
a_list[iMax] = temp
print()
return a_list
与您的问题无关(如评论所述),可以这样进行交换:
a_list[i], a_list[iMax] = a_list[iMax], a_list[i]