我自己主要工作为后台开发,所以算法使用不多,最近在看到https://visualgo.net/en网站关于排序算法的动态实现,自己尝试用python实现各类算法,代码如下
#coding:utf8
from random import randint
import random
import numpy as np
def create_list(lens):
return [randint(0,10000) for i in range(lens)]
def bubble_sort(nums):
lens = len(nums)
count = 0
for j in range(lens):
count += 1
for i in range(lens-count):
if nums[i] > nums[i+1]:
nums[i],nums[i+1] = nums[i+1],nums[i]
return nums
def select_sort(nums):
lens = len(nums)
count = -1
for i in range(1,lens):
count += 1
for j in range(count,lens):
if nums[count] > nums[j]:
nums[count],nums[j] = nums[j],nums[count]
return nums
def insert_sort(nums):
lens = len(nums)
count = 0
for i in range(lens):
count += 1
for j in range(count,lens):
if nums[j] < nums[i]:
nums[j],nums[i]=nums[i],nums[j]
return nums
def merge_sort(nums):
lens = len(nums)
count = lens
n = 2
def sort_two_list(list1,list2):
len1 = len(list1)
len2 = len(list2)
list3 = []
i,j=0,0
while i<len1 and j<len2:
if list1[i] < list2[j]:
list3.append(list1[i])
i += 1
else:
list3.append(list2[j])
j += 1
list3 += list1[i:]
list3 += list2[j:]
return list3
for i in range(0,lens-1,2):
if nums[i] > nums[i+1]:
nums[i],nums[i+1] = nums[i+1],nums[i]
while n<=lens:
list3 = []
for j in range(0,lens,2*n):
list3 +