- 快速排序是冒泡排序的升级版
时间主要用在分区上 - 缺点在于当数字全相同时就浪费时间
实现从大到小排序
排序函数
void sort(int* a,int left,int right)
{
if(left>=right)
{
return ;
}
int i=left;
int j=right;
int key=a[left];
while(i<j)
{
if(i<j&&key>a[j])
{
j--;
}
a[i]=a[j];
if(i<j&&key<a[i])
{
i++;
}
a[j]=a[i];进行交换
}
a[i]=key;
sort( a,left,i-1);递归
sort( a,i+1,right);递归
}
完整代码
#include<stdio.h>
void sort(int* a,int left,int right)
{
if(left>=right)
{
return ;
}
int i=left;
int j=right;
int key=a[left];
while(i<j)
{
if(i<j&&key>a[j])
{
j--;
}
a[i]=a[j];
if(i<j&&key<a[i])
{
i++;
}
a[j]=a[i];进行交换
}
a[i]=key;
sort( a,left,i-1);递归
sort( a,i+1,right);递归
}
int main()
{
int a[10]={1,2,35,4,67,75,3,5,6,7},i=0;
sort(a,0,9);
for(i=0;i<10;i++)
{
printf(">>>%d",a[i]);
}
return 0;
}