C++编程..用快序排列法对10个整数从小到大排列
来源:百度知道 编辑:UC知道 时间:2024/05/24 07:18:01
C++编程..用快序排列法对10个整数从小到大排列
救命..~~~~~~~~~
救命..~~~~~~~~~
#include<iostream.h>
int partition(inta[],int p,int r)
{
int i=p,j=r+1;
int x=a[p];//将<x的元素交换到左边区域,将>x的元素交换到右边区域
while(true)
{
while(a[++i]<x);
while(a[--j]>x);
if(i>=j)
break;
swap(a[i],a[j]);
}
a[p]=a[j];
a[j]=x;//位置交换
return j;
}
void main(partition){
a[10]={4,5,6,8,9,7,2,3,1,8} ;
for(int k=1;k<=10;k++)
cout<<a[k]<<endl;
}
快速排序:
int partition(int* a,int l,int r)
{
int i=l-1,j=r,v=a[r];
while(1)
{
while(a[++i]<v);
while(a[--j]>v) if(j<=i) break;
if(i>=j)
break;
swap(a[i],a[j]);
}
swap(a[i],a[r]);
return i;
}
void qsort(int* a,int l,int r)
{
if(r>l)
{
int i = partition(a,l,r);
qsort(a,l,i-1);
qso