数据结构 先进排序

本文详细介绍了快速排序的基本思想和实现过程,包括如何通过一趟操作将序列分割成两个区域,以及如何通过递归调用来对序列进行排序。文中还给出了C语言实现的快速排序算法,包括Partition函数、QSort函数和主函数,用于对顺序表进行排序。
摘要由CSDN通过智能技术生成

快速排序

快速排序的基本思想就是通过一趟操作将一个无序的序列分割成相邻的两个区域,其中一个区域中数据的关键字都比另一个区域中的小,(即找到一个枢轴,以其为居中标杆,右边的都比它小,左边的都比它大)。然后对两个区域分别进行这样的操作,直到整个序列呈现有序状态。

对与本算法而言,要调用三个函数。第一个函数int Partition(RcdType R[], int low, int high), 作用是将low...high序列进行一次划分并返回枢轴的位置。具体操作为定义pivotkey,将序列最左边数据关键字赋给它,然后将low的关键字放入R[0] 哨兵单元待定。对于high,如果其关键字比枢轴小,则将其赋给low,对于low,如果其关键字比枢轴大,则将其赋给high,同时注意对其进行自加自减操作,最后当low=high时结束,将R[0]的值赋给low,并返回low。第二个函数,void QSort(RcdType R[], int s, int t),作用是对序列 s...t 进行快速排序。函数体中首先是调用第一个函数对s..t 进行一次划分,然后得到枢轴位置后对左右两边区域递归进行划分,最终实现排序。第三个函数,通过调用第二个函数对顺序表L进行排序。<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值