classselect:
def select_sort(self):
# 选择排序
# 将第一个与剩下的进行比较,找到最小的,然后将最小的与第一个进行交换,此时第一个为最小的
# 接着将第二个与剩下的进行比较,找到最小的,然后将最小的与第二个进行交换,此时第二个为第二小的
# 以此类推,进行排序,此为选择排序,时间复杂度为O(n^2)
arr =[7,2,9,4,4,8]
n =len(arr)ifnot arr or n <2:return-1for i in range(n-1):
min = i
for j in range(i+1, n):
min = j if arr[j]< arr[min]else min
self.swap(arr, i, min)return arr
def swap(self, arr, i, j):
temp = arr[i]
arr[i]= arr[j]
arr[j]= temp
classbubble:
def bubble_sort(self):
# 冒泡排序
# 先将前两个比较,两个中小的在前,大的在后,然后将第二个与第三个相比,小的在前大的在后,最终得到最大的放在最后。
# 第二遍循环还是如此,不过此时不看最后一个,因为最后一个已经是得到的最大的
# 如此循环,每次得到最大的放到最后,时间复杂度为O(n^2)
arr =[7,2,9,4,4,8]
n =len(arr)ifnot arr or n <2:return-1for i in range(n):for j in range(n-i-1):if arr[j]>arr[j+1]:
temp = arr[j]
arr[j]= arr[j+1]
arr[j+1]= temp
return arr
classinsert:
def insert_sort(self):
# 插入排序
# 先让0~0有序(0~0时不考虑,一个数一定是有序的),然后是0~1,0~2....
# 每个区间,在最后以为往前看,如果比前面的小,就跟前面的交换,一直交换的最前面为止
# 时间复杂度为O(n^2)
arr =[7,2,9,4,4,8]
n =len(arr)ifnot arr or n <2:return-1for i in range(1, n):
j = i -1while j >=0:if arr[j]> arr[j+1]:
temp = arr[j]
arr[j]= arr[j+1]
arr[j+1]= temp
j -=1return arr