2025.11.4总结

今天继续软考的学习
今天学复习了几个排序的基本概念。还有软件工程的软件过程模型和敏捷方法。

除此之外在昨天发现一个微信小程序:软考达人 。里面有历年真题联系,章节练习,知识点学习等很多功能,是个免费的程序,我用起来非常不错,刷了很多题(不过都是简单的,难的题做不出来),之后尝试做一些难题

八大排序

5 8 1 4 7 3 2 6

一.直接插入排序

直接插入排序是从第二个数据开始遍历,与前面的数据进行比较如果小于 则让前面的数据向前移动 自己接着向前面的数据比较 直到比较到大于等于自己的数据或者没有数据能进行比较时停止 插入当前的位置。

二.希尔排序

希尔排序又称缩小增量排序,它选定了一个整数gap将待排数据分组,然后对组内的数据进行直接插入排序,接着减小gap 改变分组的区间 再进行排序。此过程称为预排序。最后gap减小到1时,数据已经接近有序,再对数据进行直接插入的排序效率则较高

三.选择排序

选择排序在八大排序中属于是最“老实的”一个排序,其基本思想 首先选出一个关键值 一般是数据的第一位 接着遍历剩下的数据 记录剩下数据中最小值和最大值的下标。接着将最小值放到左边,最大值放到右边 接着减小需要排序的区间(因为已经排一个最大值和一个最小值了在这里插入图片描述

四.堆排序

堆排序基于完全二叉树的数据结构,将待排序列构建成一个大顶堆(或小顶堆)。此时,堆顶元素是最大(或最小)值。将其与末尾元素交换,然后调整剩余元素为新堆,重复此过程直到所有元素有序。

基本思想:

  1. 将无序序列构建成堆
  2. 将堆顶元素与末尾元素交换,最大元素沉到数组末端
  3. 重新调整结构使其满足堆定义,继续交换堆顶与当前末尾元素
  4. 重复执行直到整个序列有序

五.冒泡排序

冒泡排序通过重复遍历待排序序列,比较相邻元素并交换位置错误的元素,使较大(或较小)元素逐渐"浮"到顶端。

基本思想:

  1. 比较相邻元素,如果顺序错误就交换
  2. 对每一对相邻元素做同样工作,从开始到结尾,此时最后元素是最大(最小)值
  3. 针对所有元素重复上述步骤,除了最后已排序元素
  4. 重复直到没有元素需要交换

六.快速排序

快速排序采用分治策略,通过一趟排序将数据分割成独立的两部分,其中一部分的所有数据都比另一部分小,然后递归地对这两部分进行排序。

基本思想:

  1. 从数列中挑出一个元素作为基准
  2. 重新排列数列,所有比基准小的放在前面,比基准大的放在后面
  3. 递归地对两个子序列进行快速排序

七.归并排序

归并排序采用分治法,将已有序的子序列合并,得到完全有序的序列。先使每个子序列有序,再使子序列段间有序。

基本思想:

  1. 将序列分成两半,分别进行归并排序
  2. 将两个有序表合并成一个有序表
  3. 重复分解和合并过程直到整个序列有序

八.计数排序

计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。

基本思想:

  1. 找出待排序数组中最大和最小元素
  2. 统计每个值为i的元素出现的次数,存入计数数组的第i项
  3. 对所有的计数累加(从计数数组的第一个元素开始,每一项和前一项相加)
  4. 反向填充目标数组,将每个元素i放在新数组的第C[i]项,每放一个元素就将C[i]减去1
posted @ 2025-11-04 23:07  臧博涛  阅读(8)  评论(0)    收藏  举报