快速排序的C++实现

来源:互联网 发布:c语言if break用法 编辑:程序博客网 时间:2024/06/16 22:01

快速排序是对冒泡排序的改进,改进的重点是:在冒泡排序中记录的比较和移动是在相邻位置进行的,记录每次交换只能前移或者后移一个位置,所以总的比较次数和移动次数比较多。快速排序中,记录的比较和移动是从两端向中间进行的,关键码较大的记录一次就能从前面移动到后面,关键码较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减小了总的比较次数和移动次数。

基本思想:首先选取一个轴值,将待排序的记录分割为独立的两个部分,左侧记录的值要小于等于轴值,右侧的值要大于等于轴值,然后对左右两部分重复上述操作,直到整个序列有序。

下面是C++实现:

/*************************************************************************    > File Name: test.cpp    > Author: Shorey    > Mail: shoreybupt@gmail.com    > Created Time: 2015年04月02日 星期四 17时01分27秒 ************************************************************************/#include<iostream>using namespace std;int Partition(int a[],int first,int last)//快速排序划分函数{    int f=first;    int l=last;    int tmp;    while(f!=l)    {        while(f!=l&&a[f]<=a[l])            l--;        if(f<l)        {            tmp=a[f];            a[f]=a[l];            a[l]=tmp;            f++;        }        while(f!=l&&a[f]<=a[l])            f++;        if(f<l)        {            tmp=a[f];            a[f]=a[l];            a[l]=tmp;            l--;        }    }    return f;}void QuickSort(int a[],int first,int last)//快速排序{    int p;    if(first<last)    {        p=Partition(a,first,last);        QuickSort(a,first,p-1);        QuickSort(a,p+1,last);    }}int main(){int a[5]={4,2,1,6,3};QuickSort(a,5);return 0;}


0 0
原创粉丝点击