《数据结构与算法》实验报告——快速排序

《数据结构》实验报告

学号:  2018329621200   

机器号 10-414-28  

姓名: 申屠志刚

日期:  2019/12/18        

程序名:       main.cpp       

实验内容:   快速排序   

  • 目的和要求(需求分析):
  1. 掌握快速排序的实现方法
  2. 掌握快速排序的基本思想
  3. 掌握快速排序的时间性能
  4. 要求:用快速排序法实现对无序序列的排序
  • 程序设计的基本思想,原理和算法描述:

 使用分治策略,将一个序列分为两个子序列。

步骤:

在待排序的n个记录中任选一个进行记录(通常选第一个),作为为基准(分区标准)。

进行分区,即:将所有比基准值小的元素放在基准左边,所有比基准值大的元素放在基准的右边,中间为所选的基准。

对左右两个分区递归进行步骤1、2,递归结束条件是序列的大小是0或1。

  • 调试和运行程序过程中产生的问题及采取的措施:

  • 源程序及注释:
/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
using namespace std;
void quickSort(int a[],int low, int high)//a:待排序数组,low:最低位的下标,high:最高位的下标
{
    int left=low,right=high;
    int key=a[left];//用数组的第一个记录作为分区元素
    if(low>=high)
        return;
    while(left!=right){
        while(left<right&&a[right]>=key)//从右向左扫描,找第一个码值小于key的记录,并交换到key
            right--;
        a[left]=a[right];
        while(left<right&&a[left]<=key)//从左向右扫描,找第一个码值大于key的记录,并交换到右边
            left++;
        a[right]=a[left];
    }
    a[left]=key;//分区元素放到正确位置
    quickSort(a,low,left-1);
    quickSort(a,left+1,high);
}
int main()
{
    int a[]={2,6,2,3,5,8,9,1,2,4,5,3};
    quickSort(a,0,12);
    for(auto b:a)
        cout<<b<<endl;
    //cout << "Hello world!" << endl;
    return 0;
}
  • 运行结果

 

  • 心得与体会:

通过本次试验,让我更深刻理解了快速排序法与其应用,因为快速排序是对冒泡排序的一种改进,所以在冒泡排序的原有基础上再学习快速排序就显得不是很困难。

发布了1345 篇原创文章 · 获赞 226 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/weixin_43272781/article/details/103599909