一.排序分析
参看《算法导论》
二.代码(C++)
// sort.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<assert.h>
#include<iostream>
using namespace std;
#define NUM 10
void Quick_Sort(int *a,int low,int high);
int partition(int *a,int low,int high);
void exchange(int &a,int &b);
int _tmain(int argc, _TCHAR* argv[])
{
int *a=new int[NUM];
for (int i = 0; i < NUM; i++)
{
cin>>a[i];
}
cout<<endl;
//Insert_sort(a,10);
//Bubble_Sort(a,10);
Quick_Sort(a,0,9);
for (int j = 0; j < NUM; j++)
{
cout<<a[j]<<" ";
}
cout<<endl;
return 0;
}
void Quick_Sort(int *a,int low,int high)
{
if (low<high)
{
int q=partition(a,low,high);
Quick_Sort(a,low,q-1);
Quick_Sort(a,q+1,high);
}
}
int partition(int *a,int low,int high)
{
int x=a[high];
int i=low-1;
for (int j = low; j <= high-1; j++)
{
if(a[j]<=x)
{
i++;
exchange(a[i],a[j]);
}
}
exchange(a[i+1],a[high]);
return i+1;
}
void exchange(int &a,int &b)
{
int temp=b;
b=a;
a=temp;
}
三.结果截屏:
四.时间和空间复杂度及稳定性
时间复杂度:nlgn(平均情况)
空间复杂度:lgn
不稳定排序