#!/usr/bin/python
#coding:utf-8
import random
length = 10
nums = []
for i in range(length):
nums.append(random.randint(1,100))
class sort_method(object):
def __init__(self,nums):
self.nums = nums
self.n = len(self.nums)
print(self.nums)
def bubble_sort(self):
for i in range(self.n):
for j in range(self.n-1-i):
if self.nums[j] > self.nums[j+1]:
self.nums[j],self.nums[j+1] = self.nums[j+1],self.nums[j]
def select_sort(self):
for i in range(self.n):
min_index = i
for j in range(i+1,self.n):
if self.nums[j] < self.nums[min_index]:
min_index = j
if i != min_index:
self.nums[i],self.nums[min_index] = self.nums[min_index],self.nums[i]
def insert_sort(self):
for i in range(1,self.n):
for j in range(i,0,-1):
if self.nums[j] < self.nums[j-1]:
self.nums[j],self.nums[j-1] = self.nums[j-1],self.nums[j]
def quick_sort(self,l,r):
if l >= r: return
i,j = l,r
while i < j:
while i<j and self.nums[j] >= self.nums[l]: j -= 1
while i<j and self.nums[i] <= self.nums[l]: i += 1
self.nums[i],self.nums[j] = self.nums[j],self.nums[i]
self.nums[i],self.nums[l] = self.nums[l],self.nums[i]
self.quick_sort(l,i-1)
self.quick_sort(i+1,r)
def merge_sort(self):
def merge(l,r):
i = 0
j = 0
ret = []
while i < len(l) and j < len(r):
if l[i] < r[j]:
ret.append(l[i])
i += 1
else:
ret.append(r[j])
j += 1
if j == len(r):
for c in l[i:]:
ret.append(c)
else:
for c in r[j:]:
ret.append(c)
return ret
def divide_merge(nums):
if len(nums) <= 1:
return nums
num = len(nums)//2
#print(nums)
l = divide_merge(nums[:num])
r = divide_merge(nums[num:])
return merge(l,r)
return divide_merge(self.nums)
a = sort_method(nums)
print(a.merge_sort())
a.insert_sort()
print(nums)