Python实现四种常见排序算法详解
本文详细介绍Python中四种基础排序算法的实现逻辑与代码。涵盖冒泡排序的相邻交换、选择排序的最小值定位、快速排序的双指针分区策略以及插入排序的元素移位技巧。通过具体代码示例解析核心步骤,帮助开发者掌握排序原理并优化代码逻辑。
冒泡排序与选择排序实现
1. 冒泡排序:通过比较相邻元素的大小,将较大(或较小)的元素逐步交换到正确的位置。
def maopao(a):
for i in range(0,len(a)):
for j in range(0,len(a)-i-1):
if a[j]>a[j+1]:
temp = a[j+1]
a[j+1] = a[j]
a[j] = temp
#print(a)
#print(a)
print(a)
2. 选择排序:遍历数组,每次选择一个最小的数与当前循环起始位置的元素进行交换。
def xuanze(a):
for i in range(0,len(a)):
k=i
temp = a[i]
for j in range(i,len(a)):
if a[j]<temp:
temp = a[j]
k = j
a[k] = a[i]
a[i] = temp
print(a)
快速排序的双指针分区逻辑
3. 快速排序:以子段的第一个元素作为中值,先从右向左遍历,若发现比中值小的元素,则将其放置到低位(low)处;
接着从左向右遍历,若发现比中值大的元素,则将其放置到高位(high)处。当low大于等于high时,将中值赋给low位置。
(1. 以下代码参照公众号中的实现方式:
a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high):
while low < high:
temp = a[low]
while low < high and a[high]>=temp:
high = high-1
a[low]=a[high]
while low<high and a[low]<temp:
low = low+1
a[high]=a[low]
a[low]=temp
return low
def quicksort(a,low,high):
if low<high:
middle = sort(a,low,high)
quicksort(a,low,middle)
quicksort(a,middle+1,high)
print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)
(2. 以下代码参照网络常见实现方式:
在实现快速排序时遇到诸多问题,主要源于递归逻辑未考虑清楚,错误地将low的值固定赋为0,而实际上low的值在每个子循环中是不固定的。
'''
遇到问题没人解答?小编创建了一个Python学习交流群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high):
while low < high:
temp = a[low]
while low < high and a[high]>=temp:
high = high-1
while low<high and a[high]<temp:
a[low]=a[high]
low =low+1
a[high]=a[low]
a[low]=temp
return low
def quicksort(a,low,high):
if low<high:
middle = sort(a,low,high)
quicksort(a,low,middle)
quicksort(a,middle+1,high)
print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)
插入排序的两种实现方式
4. 插入排序:从左向右遍历,依次选取数值,从该数值的左侧开始从右向左遍历,找到第一个比它小的数值,并将该数值插入其右侧,其他数值依次向后移动。
#插入排序
a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(0,len(a)-1):
temp=a[i+1]
j=i+1
while j>=0 and temp<a[j-1]:
j=j-1
print(j)
if j>=-1:
k= i+1
while k>=j:
a[k]=a[k-1]
k=k-1
print(a)
a[j]=temp
print(a)
插入排序的另一种方法,利用了列表的a.insert(1,2)和a[2:3]=[]操作,这样可以减少一个循环的使用。
a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(1,len(a)-1):
temp=a[i]
j=i-1
while j>=0 and temp<=a[j]:
print(temp)
j=j-1
if j >=-1:
a[i:i+1]=[]
a.insert(j+1,temp)
print(a)
print(a)
到此这篇关于Python实现排序的四种方法的文章就介绍到这了,更多相关python排序方法内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









