快速排序C语言实现

来源:互联网 发布:软件详细规格说明书 编辑:程序博客网 时间:2024/06/01 20:56
// testaaaaa.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <iostream>     // std::cout
#include <algorithm>    // std::make_heap, std::pop_heap, std::push_heap, std::sort_heap
#include <vector>       // std::vector
using namespace std;


int divid(int arr[],int left,int right)
{
int key=arr[left];
while(left<right)
{
while(left<right&&arr[right]>=key)
--right;
arr[left]=arr[right];
while(left<right&&arr[left]<=key)
++left;
arr[right]=arr[left];
}
arr[left]=key;
return left;
}
void myqsort(int arr[],int left,int right)
{
if(left<right)
{
int privote=divid(arr,left,right);
myqsort(arr,left,privote-1);
myqsort(arr,privote+1,right);
}
}
int main () {
int myarray[]={10,2,3,22,999,7,8,666,99};
myqsort(myarray,0,8);
for(int i=0;i<9;i++)
cout<<myarray[i]<<" ";
cout<<endl;


  return 0;

}


快速是不稳定的排序算法,

           平均时间    退化                    空间开销
快速O(nlogn)O(n2)不稳定O(nlogn)n大时较好

0 0