Python中的选择排序简介
选择排序技术已经被用来完成对给定元素按某种特定顺序的适当排序。然而,排序技术的必要性在于所产生的数据是非常糟糕的顺序,那么我们需要设置一个特定的选择排序技术。 在现有的排序技术列表中,选择排序是最基本的一种。选择排序技术包括确定最小的元素并对其进行操作,以获得整个输入集的排序。在本主题中,我们将学习Python中的选择排序。
选择排序的逻辑
在这里,首先确定未排序集合中的最小元素;然后,在给定的未排序集合中,这个最小的元素被放置在未排序集合的开头。然后,这个元素将被定位在未排序集的开始或第一个位置,这个位置已经被操作过。接下来,这个操作将在未排序集的每一个元素上进行。因此,这意味着未排序集合中的每一个最小元素都将被确定并排队返回到制定的集合中,一个接一个。
下面的例子解释了选择排序的执行技术。
前数组: [ 29,54,3,56,78,62]
迭代#1
整个列表被依次验证,值3被确定为给定列表中的最低值。所以值3将与29的位置互换。结果集看起来就像下面这样。
迭代1的结果: [3,54, 29,56,78,62]
迭代#2
再次对整个列表进行顺序验证,值29将被确定为上述列表中可能的第二小的值。所以29号值将与第二位的54号值互换。结果是,结果集将如下所示。
迭代2的结果: [3,29,54,56,78,62]
迭代#3
在进行第三次迭代时,可以确定54是第三个最小的值,并且它已经与给定列表中的第3位相关联。这意味着对当前的列表不会有任何改变,因为它已经是给定的必要格式。
迭代3的结果: [3,29,54,56,78,62]
迭代 #4
同样在评估时,将确定值56是第四小的值,这将被关联到数组或列表的第4个位置。因此,由于现有的列表是这种格式,在第4次迭代中不会对列表做任何进一步的改变。
迭代4的结果: [3,29,54,56,78,62]
迭代 #5
从第五次迭代中,可以确定值62是列表中第五个最小的值。因此,由于它目前被置于列表中的最后一个元素,它需要与之前的元素交换,所以这意味着值62将与值78交换。所以78将作为数组中的最后一个元素。所以现在,这个数组变成了一个有序的序列。
迭代6的结果: [3,29,54,56,78,62]
Python中选择排序的例子
下面提到不同的例子。
例子--For 循环
代码:
Selection_Array = [29,54,3,56,78,62]
# Print the keyed in input array
print("Unsorted Array:",Selection_Array)
print("\n")
# Ever element in the array is selected for processing
for element1 in range(len(Selection_Array)):
# The most least index value form the giben list is initially associated to element1
Least_Index = element1
# From the holded item the next item is identified and looped across for finding the smallest value
for element2 in range(element1+1, len(Selection_Array)):
if Selection_Array[Least_Index] > Selection_Array[element2]:
Least_Index = element2
# The previous element in the list and the currently holded least element is been swapped
Selection_Array[element1], Selection_Array[Least_Index] = Selection_Array[Least_Index], Selection_Array[element1]
# main code
print ("Array after getting sorted by selection sort")
print("Sorted Array:",Selection_Array)
输出 :
解释
上面提到的技术是最常用的选择排序技术。它涉及到接受列表中的一个键值。列表最初被打印在控制台。接下来,列表中每个键的元素被挑选出来进行处理。最后,每一个被选中的项目与列表中的每一个其他项目进行比较。如果当前项目是最小的一个,那么它将保持原样。但如果当前项目大于给定列表中的其他元素,那么它将被比较并与当前位置的元素互换。这个过程将在列表中的每个其他元素中进行。比较和交换过程将在列表中的所有元素上进行。所以,最后,检索到的列表将是一个非常有排序的顺序。新生成的有序列表被打印在控制台。
代码:
Selection_array = [29,54,3,56,78,62]
print("Unsoted Array",Selection_array)
iterator = 0
while iterator < len(Selection_array):
#smallest element in the sublist
smallest = min(Selection_array[iterator:])
#Smallest element index
index_of_smallest = Selection_array.index(smallest)
#Swap the contents of the array
Selection_array[iterator],Selection_array[index_of_smallest] = Selection_array[index_of_smallest],Selection_array[iterator]
iterator = iterator + 1
print("Soted Array",Selection_array)
输出:
解释: 这里再次通过while循环实现了选择排序技术。在这里,对于给定的数组或列表的长度,数组中的每个元素都被验证为最小的值;只要找到最小的值,它就会与列表中的第一个项目进行交换。这个交换过程再次对列表中的所有元素进行迭代。隔离每一个最小的元素使得列表的制定非常具有升序性。因此,在这一过程结束时,一个很好的有序列表就准备好了。同样,这个列表是升序的。最后,制定的列表被打印到控制台。
总结
排序被认为是编程认知中的关键范式之一。其中涉及到许多排序技术,这些技术的意图是以升序或降序的方式实现处理,更普遍的是以某种有序的方式实现处理。上述文章很好地制定了一种合适的方式,以一种非常精确的方式实现对给定数据实体的选择排序。