数据结构与算法_排序

稳定算法


前言

排序算法
所谓 排序 ,使一串记录,按照其中的 某个或某些关键字 的大小,递增或递减的排列起来的操作
排序算法 ,就是如何使得记录按照要求排列的方法
排序算法在很多领域是非常重要
大量数据 的处理方面:一个优秀的算法可以节省大量的资源。
各个领域 中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析

一、什么是排序和排序算法?

排序:使一串集录,按照其中的某个或某些关键字的大小递增递减.

排序算法:使记录递增递减的方法.

二、稳定性算法

 1.什么是稳定性算法?

具有相同关键字的记录经过排序后,相对位置保持不变,这样的算法算稳定性算法.

稳定性算法举例:冒泡排序、插入排序、归并排序和基数排序

1.冒泡排序

相邻位置两个元素 比较, 前面的元素 后面的元素 大则交换,
把最大的数给找到
经过一轮一轮的比较最终把序列给排序

 代码演示:

def bubble_sore(alist):
    """冒泡排序"""
    #数列的长度
    n  = len(alist)
    #外层循环控制轮数
    for i in range(0,n-1):
        #计数
        count=0
        #内层循环控制比较次数(相邻位置两个元素比较次数)
        for j in range(0,n-i-1):
            比较相邻的两个数字,符合要求交换位置
            if alist[j]>alist[j+1]:
                alist[j],alist[i+1]=alist[i+1],alist[i]
                count+=1
        # 若遍历完一遍历完之后,数字没有交换,说明序列有序,退出外层循环
        if count == 0:
            break

2.插入排序

插入排序的组成
插入算法把要排序的数组分成 两部分 :第一部分是 有序的数字 (这里可以默认数组第一个数字为有序的第一部分),第二
部分为 无序的数字 (这里除了第一个数字以外剩余的数字可以认为是无序的第二部分)

代码示例:

def insert_sort(alist):
    n = len(alist)
    # 外层循环控制轮次
    for i in range(1, n):
        # 内层循环控制 插入位置
        for j in range(i, 0, -1)
             # alist[i]为待插入的数据
             # 若待插入数据小于有序数据,则插入; 若待插入数据大于有序
             #数据,则break
            print("要插入的数 pk 要比较的数:", alist[i], alist[i - 1])
            if alist[i] < alist[i-1]:
                alist[i], alist[i-1] = alist[i-1], alist[i]
            else:
                break

总结

1、假定在待排序的记录序列中,存在 多个具有 相同的关键字 的记录
2、若经过排序,这些记录的 相对次序保持不变 , 则称这种排序算法是稳定的, 否则称为不稳定的 记忆:具有相同关键字的纪录经过排序后,相对位置保持不变,这样的算法是稳定性算法

相关推荐

  1. 数据结构算法-排序算法

    2024-01-18 09:38:02       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 09:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 09:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 09:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 09:38:02       18 阅读

热门阅读

  1. ssh: connect to host github.com port 22: Connection timed out

    2024-01-18 09:38:02       33 阅读
  2. npm install:深入理解与应用

    2024-01-18 09:38:02       31 阅读
  3. Hive之set参数大全-8

    2024-01-18 09:38:02       27 阅读
  4. Git中config配置

    2024-01-18 09:38:02       26 阅读
  5. postgresql安装脚本

    2024-01-18 09:38:02       40 阅读
  6. 用 Golang 启动个简单的http服务器

    2024-01-18 09:38:02       31 阅读
  7. 云计算入门——如何选择 Linux 发行版

    2024-01-18 09:38:02       33 阅读