快速排序总结

快速排序是冒泡排序的升级,都属于交换排序类,即通过不断比较和移动交换来实现排序。冒泡排序的实现是两两比较相邻的关键字,然后交换反序的记录,而快速排序的实现增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面移动到前面,从而减小了比较次数和移动交换次数。首先,我们看一下冒泡排序的实现1、冒泡排序基本思想:两两比较相邻记录的关键字,如果反序就交换记录,直到没有反序记录为止。实现代码为:void BubbleSort(vector<int>* L){
摘要由CSDN通过智能技术生成

快速排序是冒泡排序的升级,都属于交换排序类,即通过不断比较和移动交换来实现排序。冒泡排序的实现是两两比较相邻的关键字,然后交换反序的记录,而快速排序的实现增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面移动到前面,从而减小了比较次数和移动交换次数。

首先,我们看一下冒泡排序的实现

1、冒泡排序

基本思想:两两比较相邻记录的关键字,如果反序就交换记录,直到没有反序记录为止。
实现代码为:

void BubbleSort(vector<int>* L)
{
   
  int i,j;
  for (i=0;i<L->size();i++){
   
      for (j=L->size()-2;j>=i;j--){
   
          if (L->at(j)>L->at(j+1)){
   
              //若前者大于后者,则交换
              int temp=L->at(j);
              L->at(j)=L->at(j+1);
              L->at(j+1)=temp;
           }
      }
   }
}      

冒泡排序需要比较(n-1)+…+3+2+1=n(n-1)/2次,故时间复杂度为O(n2 )。

2、快速排序(Quick Sort)

基本思想:通过一次排序将待排序记录分割成独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小,则分别对这两部分继续进行排序,以达到整个序列有序的目的。
排序算法的核心:要找到一个关键字,使其左边的值都比它小,右边的值都比它大,这个关键字称为枢轴
寻找枢轴的具体思路为:将顺序表中的第一个记录作为枢轴记录,从表的两端交替向中间扫描,将高端比枢轴小的记录交换到低端,将低端比枢轴大的记录交换到高端,最后返回枢轴的位置。
快速排序的代码为:

#include<iostream>
usin
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值