【PAT笔记】PAT中几种简单的排序(冒泡、选择、插入)

PAT【甲级】的相关要求:

     在达到乙级要求的基础上,还要求:

  1. 具有充分的英文阅读理解能力;
  2. 理解并掌握基础数据结构,包括:线性表、树、图;
  3. 理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等;
  4. 具备较强的问题抽象和建模能力,能实现对复杂实际问题的模拟求解。

所以需要掌握等能力也包括:线性表、树、图、哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等十几种算法能力。在PAT【乙级】中最难到排序算法,所以先从排序算法开始学习。

1.1 冒泡排序

算法步骤:

  1. 比较两个相邻的元素,如果第一个元素比第二个元素大,那么交换两个元素;
  2. 对每一对相邻的元素做同样的工作,从开始第一对到结尾最后一对,这步做完后,最后的元素会是最大的数;
  3. 针对所有元素重复以上步骤,除了最后一个数;
  4. 持续每次对越来越少的元素重复上述步骤,直到没有任何一对数字需要比较。

代码实现:

void BubbleSort(int arr[],int n){
    for(int i=0;iarr[j+1]){  //如果前一个元素比后一个元素大,交换两个元素
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}

 1.2 选择排序

算法步骤:

  1. 首先在未排序序列中,找到最小(大)的元素,存放到排序序列的起始位;
  2. 再从剩余的排序序列中继续寻找最小(大)的元素,存放到已排序序列的末尾;
  3. 重复第2步,直到所有的元素均排序完毕。

代码实现:

void SelectSort(int arr[],int n){
    for(int i=0;i

1.3 插入排序

算法步骤: 

  1. 将待排序序列的第一个元素看作第一个有序序列,把第二个元素到最后一个元素看做未排序序列;
  2. 从头到尾扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置,如果插入的元素与有序序列找那个的每个元素相等,则将待插入元素插入到相等元素的后面。

代码实现:

void InsertSort(int arr[],int n){
    for(int i=1;i0&&temp

 

你可能感兴趣的:(2,图解算法和数据结构)