排序算法是机器学习算法中较为基础的算法,一般来说,机器学习的排序算法有8种,分别是:冒泡算法,插入算法,直接选择算法,快速排序算法,希尔排序算法以及堆排序算法和归并算法,基数排序算法。这里首先学习了前三种最基本的排序算法。
冒泡算法是较为基础的排序算法之一,其主要思想就是通过不断比较数字大小,将数字大的换到数字小的后方,通过多次循环,能够实现每次循环结束都将会把数字最大的数放在当前循环的最后一位。具体实现方法Python代码如下:
def bubbleSort(nums):
for i in range(0,len(nums)-1):
for j in range(0,len(nums)-i-1):
if nums[j]>nums[j+1]:
temp = nums[j]
nums[j]=nums[j+1]
nums[j+1]=temp
nums = [7,6,3,9,1,8]
print("排序前:", nums)
bubbleSort(nums)
print("排序后:", nums)
直接插入排序算法核心思想是将需要排序的部分分为两部分,一部分是排序好的,另一部分是未排序的。每次从未排序的部分中抽取一个数字,通过比较大小,将其放入指定位置,每排序一个数字,未排序部分就少一个数字,直到所有排序完成。具体Python代码如下:
def insertSort(nums):
for i in range(1,len(nums)):
temp = nums[i]
j = i-1
while j>=0 and nums[j]>temp:
nums[j+1]=nums[j]
#j-1,向前比较
j-=1
nums[j+1]=temp
list = [7,4,3,8,0,4,3,5,1,6]
insertSort(list)
print(list)
直接选择排序的基本思想是从未排序的序列中选择一个最小的数字,将其放在已经排序好的部分最后,具体实现Python代码如下:
def selectSort(nums):
for i in range(0,len(nums)):
minIndex=i
for j in range(i+1,len(nums)):
if nums[j]<nums[minIndex]:
minIndex=j
if minIndex!=i:
temp = nums[minIndex]
nums[minIndex]=nums[i]
nums[i]=temp
list = [3,5,1,8,6,9,7,0,2]
selectSort(list)
print(list)