首页 > 编程知识 正文

快速排序与冒泡排序,c语言快速排序和冒泡排序

时间:2023-05-06 03:23:27 阅读:31646 作者:3803

传统的排序算法有几种排序方式,下面介绍如何理解和实现冒泡排序和快速排序。 我记得太多了,很容易混乱。

1 )鼓泡排序)顾名思义,大数值从上到下排列,像水里的泡沫一样,从水底的某个位置向上冒出。

思想:

第一次:从数组的最左边开始,取第一个要素与第二个要素相比,小的放在前面,大的放在后面; 然后,将第2个元素与第3个元素比较,将大的出现在第3个位置,将小的出现在第2个位置,然后将第3个元素与第4个元素比较,第4和第5个比较,合计n-1次比较,最大的元素出现在最右边

第二次:从序列最左边开始,取第一个元素与第二个元素比较,小的放在前面,大的放在后面,第二个元素与第三个元素比较,大的放在第三个位置,小的放在第二个位置,还有第三个元素放在第四个位置

比较合计n-1次,如第3次、第4次、 (上述n均为排列长度) ) ) ) ) ) )。

气泡排序的时间复杂性: o(n^2) ) ) ) ) ) ) ) ) ) )。

泡沫排序的实现

测试

2 .快速排序

思想:第一次:取数组的第一个要素a[0],作为坐标值key。 (此时,a[0]被放入key中,a[0]的位置相当于空) ),所以从数组的最右边分别与key值进行比较,如果大于key值,则保持放在右边不动,一直进行比较,比key值更好如果遇到大于key值的东西,放在刚才右边的空位置。 然后,从刚放在右边的位置前面开始,分别与key值相比,大于key的放在不动的位置,小于key的放在左边的空位置。就这样往返,比较直到左右的相遇停止。 在遇到的位置输入key值(即a[0] )。 此时,左边的都是小于a[0]的值,右边的都是大于a[0]的值,相当于将数组在a[0]中分为[left,n-1]、[n 1,right]两个数组,n位置为

第二次:对上一次分割的两个序列[左,n-1]和[n 1,右],分别取第一个位置的值进行第一次比较的过程;

第三次:在第二次结束时,将两个数组拆分为四个数组,并分别停止,直到第一个位置取值进行第一次比较的每个进程数组的长度为1。 此时,各数组有保证。 右大于左时,大数组有序,拍顺序。

实现快速排序

测试

快速排序的思想有点绕圈子,要理解的话,我想还是多动脑子想想,理解起来比较简单。

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