快速排序算法是什么

快速排序(Quicksort)是对冒泡排序的一种改进。它通过一趟排序将要排序的数据分割成独立的两部分,一部分的所有数据都比另一部分所有数据都小,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,让整个数据变成有序序列。

快速排序(Quicksort)是对冒泡排序的一种改进。

快速排序算法是什么

快速排序由 C. A. R. Hoare 在 1960 年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

排序流程

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。

(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

排序步骤原理

设要排序的数组是 A[0]……A[N-1],首先任意选取一个数据(通常选

用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

一趟快速排序的算法是:

1)设置两个变量 i、j,排序开始的时候:i=0,j=N-1;

2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];

3)从 j 开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值 A[j],将 A[j]和 A[i]的值交换;

4)从 i 开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的 A[i],将 A[i]和 A[j]的值交换;

5)重复第 3、4 步,直到 i=j; (3,4 步中,没找到符合条件的值,即 3 中 A[j]不小于key,4 中 A[i]不大于key的时候改变 j、i 的值,使得 j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候 i, j 指针位置不变。另外,i==j 这一过程一定正好是 i+或 j-完成的时候,此时令循环结束)。

程序调用举例

用法:

void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));

参数:

1、待排序数组首地址;

2、数组中待排序元素数量;

3、各元素的占用空间大小;

4、指向函数的指针,用于确定排序的顺序。

(0)
时间不会说谎  的头像时间不会说谎  

相关推荐

  • 摄影手套有必要买吗,冬季拍照必备还是多余装备

    摄影是一项需要专业技能和精细操作的艺术,而在冬季拍摄中,摄影手套被认为是必备装备之一。但是,有些人可能会疑惑,摄影手套真的有必要吗?它们是冬季拍照的必备装备还是多余的装备?在本文中,我们将探讨摄影手套的必要性以及如何选择适合自己的摄影手套。

    2023年11月28日
  • 更改支付密码如何改,详细步骤分享

    随着移动支付的普及,越来越多的人开始使用手机支付,而支付密码的安全性也变得越来越重要。如果您的支付密码已经泄露或者忘记了,那么更改支付密码就成为了必须要做的事情。本文将为大家详细介绍更改支付密码的步骤,让大家轻松搞定。一、登录支付宝账户

    2023年11月27日
  • 笔记本win10忘记开机密码,该如何重置密码

    在我们日常使用电脑的过程中,很多人都会设置密码来保护自己的电脑,但是有时候我们会忘记密码,这时候该怎么办呢?本文将为大家介绍如何重置笔记本Win10忘记开机密码的方法。一、使用Microsoft账户重置密码如果你的电脑是使用Micros

    2024年1月7日
  • 怎样快速增加微博粉丝量

    微博可以通过积极的关注互粉,活跃的评论转发,甚至可以通过第三方平台购买,与此同时更重要的就是微博的定位方向,然后就是运营微博内容,有时还可以发布红包或抽奖活动来快速增加粉丝。 现在…

  • ie浏览器收藏夹作用是什么?,如何更好地管理您的网络资源

    作为一名经常使用IE浏览器的用户,你一定经常使用收藏夹来管理你的网络资源。但是,你是否真正了解IE浏览器收藏夹的作用是什么呢?在这篇文章中,我们将深入探讨IE浏览器收藏夹的作用,以及如何更好地管理您的网络资源。一、IE浏览器收藏夹的作用

    2023年10月31日
  • techcrunch的中文翻译,哪家翻译公司最专业可靠?

    TechCrunch是全球知名的科技媒体,其报道的信息和文章内容备受关注。然而,对于不懂英语的读者来说,阅读TechCrunch的文章可能会有一定的难度。因此,许多读者需要TechCrunch的中文翻译来帮助他们更好地理解文章内容。那么,哪

    2023年12月2日
  • 怎么提高浦发银行金卡额度

    申请提高浦发银行信用卡的额度需要使用信用卡满半年以上,保持良好的还款记录,方可申请。首次提额后需要过了6个月以后才可再次申请。如果信用记录良好,银行会不定期为用卡记录良好的持卡人主…

  • 德赛西威187b怎么调时间,详细步骤教程

    德赛西威187b是一款功能强大的手表,它不仅具有时间显示功能,还有计时、闹钟、定时等多种实用功能。但是,对于很多新手来说,如何调整时间却是一个大难题。本文将为大家详细介绍德赛西威187b怎么调时间的步骤,帮助大家轻松掌握。一、了解德赛西威

    2023年11月19日
  • 25岁就拿诺贝尔奖的人,让我看到了世界的参差

    原创 见文末 果壳 收录于话题 #诺贝尔奖 74个内容成为诺贝尔奖得主,已经约等于成为了超级人生赢家。但我们如果端详各位诺奖得主的生平,仍然能从中品出些许世界的参差——有人在25岁…

    2021年10月5日 科技
  • UltraISO是什么

    UltraISO软碟通是一款功能强大而又方便实用的光盘映像文件制作、编辑、转换工具,可以直接编辑ISO文件和从ISO中提取文件和目录,从CD-ROM制作光盘映像或者将硬盘上的文件制…

  • 2光4电光纤收发器,什么是它的工作原理?

    随着科技的不断进步,网络通信技术也在不断地发展。在网络通信中,光纤是一种重要的传输介质。而2光4电光纤收发器则是光纤通信中不可或缺的一部分。那么,什么是2光4电光纤收发器?它的工作原理是什么?下面,我们将详细介绍。一、什么是2光4电光纤收

    2023年11月24日
  • 格力50绿满园,如何选购适合自己的空调

    随着气温的升高,空调成为了人们生活中必不可少的一部分。如今市场上的空调品牌众多,其中格力空调备受消费者的青睐。而其中的格力50绿满园系列更是备受关注。那么如何选购适合自己的空调呢?本文将从以下几个方面为大家详细介绍。一、了解格力50绿满园

    2023年10月20日
  • 台式电脑如何投屏到投影仪,简单易懂的操作步骤

    随着科技的不断发展,投影仪已经成为了我们日常工作和生活中不可或缺的一部分。而对于需要进行演示或者展示的场合,台式电脑的投屏功能也变得越来越重要。那么,如何让台式电脑投屏到投影仪呢?下面,我们就来介绍一下简单易懂的操作步骤。一、使用HDMI

    2024年1月15日
  • oppo K5玩王者怎么样,流畅度如何?

    作为一款面向年轻人的手机,oppoK5在性能和游戏方面都有着不错的表现。那么,oppoK5玩王者怎么样呢?流畅度如何?本文将为大家详细介绍oppoK5玩王者的表现以及优化方法。一、oppoK5玩王者的表现1.性能表现oppo

    2023年10月28日
  • nba2k13直装版,哪里可以下载并安装?

    NBA2K13是一款备受玩家喜爱的篮球游戏,而NBA2K13直装版则是一种更加方便的游戏安装方式。相比于传统的光盘安装方式,NBA2K13直装版可以让你更快捷地安装游戏,并且不需要担心光盘损坏或者丢失的问题。那么,你可能会问,NBA2K13

    2023年11月10日

发表回复

登录后才能评论