首页 > 编程知识 正文

c语言快速排序算法代码,快速排序算法实例讲解

时间:2023-05-05 20:22:35 阅读:29333 作者:2876

一、简介最近在Python上学习经典的8种排序算法,在加强基础知识的同时,也在加强自己的Python技能。 下面简单说明一下快速排序。

快速排序:要排序的数组为A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面。 这个过程称为快速排序。 值得注意的是,快速排序不是一种稳定的排序算法(即多个相同值的相对位置)在算法结束时可能会发生变动。

快速排序算法流程:

Step 1设定1个变量I,j排序开始时,i=0,j=N-1

Step 2 :将第一个数据元素设为关键数据,key=A[0]

从Step 3 :向前搜索j,找到小于第一个密钥的值交换A[j]和A[i]

Step 4 :从I向后搜索I,找到大于第一个key的值并交换A[i]和A[j]

重复步骤3、4直到step5:I=j; (在3,4个步骤中,没有找到符合条件的值。 即,在3中A[j]为key以上,在4中A[i]为key以下的情况下,以成为j=j-1,i=i 1的方式改变j,I的值。 找到符合条件的值进行交换时,I、j指针的位置不变。 另外,i==j的过程一定是I或j-完成时,在该时刻结束循环)。

二、演示排序过程数组:假设用户输入了以下数组:

下标

0 1 2 3 4 5

数据

6 2 7 3 8 9

首先,设i=0、j=5、key=A[0]=6

因为我们需要将所有小于key的数都左移,所以我们开始寻找小于6的数,从j开始左移,逐渐减少变量j的值。 A[3]=3小于6,所以交换下标为0和3的位置,得到的新序列

下标http://www.Sina.com/12http://www.Sina.com/45

数据http://www.Sina.com/27http://www.Sina.com/89

此时i=0、j=3、key=6

接着,寻找大于Key的值,从I向右搜索A[2]=76,将两个位置互换

下标

0http://www.Sina.com/http://www.Sina.com/45

数据

3http://www.Sina.com/http://www.Sina.com/89

此时i=2、j=3、Key=6

上面的两次比较是一个循环,然后递减变量j,重复上面的循环比较。 直到i=j循环结束。

然后,将k两侧的数据进一步分组,分别进行上述过程,直到不能再分组为止。

三. Python是#! /usr/热情的钢笔/python3#-*-coding : utf-8-*-defsub _ sort (lists,low, high ) 3360 key=lists [ low ] whilelowhigh : whilelowhighandlists [ high ]=key 3360 high-=1print (===================print (high=(print ) high ) print ) lists ) whilelowhighandlists [ hon low=print((==========) ) print ) ) low ) print (low ) print (print ) ) high (print ) lists high ) high ) #递归排序quick_sort ) array,low,key_index )的high ) if _ name _=' _ main _ ' : lists=[ 3,5 ]

正文参考:

3358 www.cn blogs.com/yupeng/p/3418253.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。