您的位置:首页 > 编程语言 > C语言/C++

快速排序

2016-06-21 21:31 316 查看
         快速排序是冒泡排序的改进,是不稳定排序,平均时间复杂度为o(nlogn),最好的时间复杂度为o(nlogn),若初始序列有序或基本有序时,快速排序退化为冒泡排序,其时间复杂度为o(n^2)。通过每一趟的排序,根据关键值将待排序列划分为两个独立部分,一部分大于关键字,一部分小于关键字,再依次用上述方法迭代。

#include<iostream>
#include<stdlib.h>
using namespace std;
void kuaipai(int num[],int i,int j)
{
int low=i,high=j;
int key=num[i];//每一次排序的基准值,此时i的位置空缺
if(i<j)//退出迭代的条件
{
while(i<j)
{
//先从右侧开始比较
while(num[j]>key&&i<j)
j--;
if(i<j)
num[i++]=num[j];//此时将i的位置补填,j的位置空缺
//再从左侧开始比较
while(num[i]<key&&i<j)
i++;
if(i<j)
num[j--]=num[i];//此时将j的位置补填,i的位置空缺
}
num[i]=key;//直到i==j
kuaipai(num,low,i-1);//迭代
kuaipai(num,i+1,high);//迭代
}
}
int main()
{
int num[5];
for(int i=0;i<5;i++)
cin>>num[i];
kuaipai(num,0,4);
for(int i=0;i<5;i++)
cout<<num[i];
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 快速排序