python实现常见排序函数

本文通过Python实现几种常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序及归并排序,并展示了每种方法的具体步骤及最终排序结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值