C语言排序算法:[1]教你理解快速排序。
1、一、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4}
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/c8373cbc7dc5cf674e87dcf28e96b814f5d0266c.jpg)
2、二、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别指向数组第一个元素和最后一个元素。
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/f591ab03c8d246fe2a96cb37b8bf3bef344f1e6c.jpg)
3、三、算法的基本运算步铿溘老呻骤为:1、依次比较数组的后游标所指与temp的大小,如果temp<a[j],则j--,直到遇到第一个temp>a[j],则停止移动,将a[j]赋值给a[i]
4、四、算法的基本运算步骤为:2、依次比较数组的前游标所指与temp的大小,如果temp>a[i],则i++,直到遇到第一个temp<a[i],则停止移动,将a[i]赋值给a[j]
5、五、算法运算步骤为:3、判断i是否等于j,如果不相等则循环1、2步,直到i等于j,则完成一次快速排序。
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/32fe25ef354f50b8c7e6a16fdc4afa32929c186c.jpg)
6、六、算法解释:这样一次循环做完后结果就是比temp小的尽量放在temp前,比temp大的尽量放在temp后。但是这种顺序不是稳定的,会有调整。因此快速排序不是一种稳定的排序。以下是实现程序。
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/fb738d9c2cf7dfb2a6c1c798d01b1edef5dc136c.jpg)
7、七、一次排序完之后在分别对temp前的数组元素和temp后的数组元素分别进行快排,直到数组元素个数为1则停止。
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/5a5a00def4dca03993c7c75858d96975f3c40d6c.jpg)
8、八、运行结果如下:
![C语言排序算法:[1]教你理解快速排序。](https://exp-picture.cdn.bcebos.com/6834ecc4ec99594383d9414a95425d6b05d1046c.jpg)