数据结构与算法

一:关于冒泡排序、选择排序、插入排序算法python的实现

1、冒泡排序:

冒泡排序简单的想就是将一组无序列表,将相邻的两个数进行比较,将这两个数较大的数向上排列,类似于水中的气泡一样,越大的数与向上走,此时区分出已经排序完成的区域,和待要排序的区域,我们只需要在待要排序的区域进行重复性工作。如下图所示
具体实现过程
图上的黄色背景指的是列表的坐标,整个过程就是,相邻的两个元素进行比较,如果前一个数比后一个数大,那么交换位置,则再用此时交换过的数据再依次进行比较:

"""
	这里的list_data是指用户输入需要排序的列表
	j 是指从列表的下表,从0开始到列表长度减1为止
"""
 for i in range(len(list_data) - 1):
        exchange = False
        for j in range(0, len(list_data) - i - 1):
            """        
                如果前后一个比后一个的数大,则是升序排列            
            """
            if list_data[j] > list_data[j + 1]:
                list_data[j], \
                list_data[j + 1] = list_data[j + 1], \
                            list_data[j]
                exchange = True
        print(list_data)
        if not exchange:
            return
list_Data = [9,6,8,5,4,10,2,3,7]
    Bubble_Sort(list_Data)
    print(list_Data)
	1 [6, 8, 5, 4, 9, 2, 3, 7, 10]
	2 [6, 5, 4, 8, 2, 3, 7, 9, 10]
	3 [5, 4, 6, 2, 3, 7, 8, 9, 10]
	4 [4, 5, 2, 3, 6, 7, 8, 9, 10]
	5 [4, 2, 3, 5, 6, 7, 8, 9, 10]
	6 [2, 3, 4, 5, 6, 7, 8, 9, 10]
	7 [2, 3, 4, 5, 6, 7, 8, 9, 10]

2、选择排序

选择排序简单思路就是,第一种:我们从一组无序的列表中,假定第一个下表为零的数为最小的那个数,然后依次进行对比,将已经查找的数字,我们放到有序区,将没有对比的数放入到无序区。在操作过程中,我们操作的是下标而不是列表的数。第二种:遍历一遍,找出最小的那个数,然后将最小的数存放在新列表的第一个,但这样的话考虑到很浪费资源,如果数据量很大的话,再实际生产环境中会出现内存爆满的情况,所以在这里建议用第一种方式进行排列。

	# 选择排序
def selection_sort(list_Data):
    """

    :param list_Data:
    :return: 选择排序  核心点主要是有序区,无序区,查找到无序区最小的数

            1、第一个次记录最小的数,放到第一个位置
            2、第二次在无序区查找最小的数,放到第二个位置
    """
    for i in range(len(list_Data) - 1):
        # 假定第一个数是最小的,这时候再查看后面的数
        mix_index = i
        print(mix_index)
        for j in range(i + 1, len(list_Data)):
        # 如果后面的一个数小于 我们假定第一个数
            if list_Data[j] < list_Data[mix_index]:
            # 然后将  两个数的下表进行交换
                mix_index = j
                # 判断是否是最后一个数,那么将两个数交换下
        if mix_index != i:
            mix_index[j], mix_index[j + 1] = mix_index[j + 1], mix_index[j]

3、插入排序

“”"
插入排序的思路就是,假定第一个数已经排序好了,然后从第二个数开始与第一个数拍好的序列进行对比,此时第一个数与第二个数已经安大小排序好了,然后用第三个数与前两个数进行对比,插入到比他前面小的数后面,比他的数后面,具体实现就是 从列表小标 1的位置开始对比

        
def insert_sort(list_Data):
    for i in range(1, len(list_Data)):

        j = i - 1

        if list_Data[j] > list_Data[i]:
            
            # 待排序的变量
            temp = list_Data[i]

            print("当前的值:", temp)

            list_Data[i] = list_Data[j]

            j = j - 1

            while j >= 0 and list_Data[j] > temp:
                
                list_Data[j + 1] = list_Data[j]

                j = j - 1

                list_Data[j + 1] = temp

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值