算法二---排序(1)

题目

Question1 2017年11月20日
Description:
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O( N2 ) 的排序算法。
样例:
对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。

分析

1.冒泡排序

通俗地说,数组的每个元素都是个泡泡,数字越,就越轻,所以3就会一层一层的往右边浮动,先和2比,轻一些,把2挤下去,再和1比,轻一些,浮上去,和4比,ok,停住,同时把使命交给4,4继续上浮,以完成一整个循环。下一次就从第二个位置开始。
这里写图片描述

这里写图片描述

def sortIntegers(self, A):
    for i in range(len(A)):
        j = i
        for j in range(j+1,len(A)):
            if A [i] > A [j]:
                k = A[i]
                A[i] = A[j]
                A[j] = k
            else:
                pass
    print(A)

两层循环,时间复杂度 N2

时间复杂度:O( N2 )

2.选择排序

这里同样是两层循环,每层循环选出一个剩下的元素中最小的放在数组的前面,第一次选出1,放在对首,下一循环就从队首后开始,选出2,放在队首后面,以此类推,关键就是每次循环要保存一个最小值。

这里写图片描述

这里写图片描述

def sortIntegers2(self, A):
    for i in range(len(A)):
        j = i
        minNum = A[i]
        for j in range(j+1,len(A)):
            if A [j] < minNum:
                k = minNum
                minNum = A[j]
                A[j] = k
            else:
                pass
            A[i] = minNum
    print(A)

时间复杂度:O( N2 )

3.插入排序

插入排序的理解,需要两个数组,初始数组是被排序数组和空数组,把被排序数组中的元素一个个插入空数组中,插好即排好。每次插入时只要从头遍历排好的数组找到左边小右边大的位置插进去就行了。

这里写图片描述

这里写图片描述

def sortIntegers3(self, A):
    B = [A[0]]
    for i in range(1,len(A)):
        j = 0
        for j in range(j,len(B)):
            if A[i] < B[j] :
                B.insert(j,A [i])
                print(A[i])
                break
            else:
                pass
        B.append(A[i])
    A = B
    print(A)

时间复杂度:O( N2 )

总结:
这几种排序是最好写的,同时复杂度也是最高的,感觉起一个引导的效果吧,主要还是后面的复杂度更低的排序算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值