冒泡法改为快速排序

来源:百度知道 编辑:UC知道 时间:2024/06/19 09:44:19
void sort(void)
{
int i,j;

for(i=0;i<m-1;i++)
{
for(j=m-1;j>i;j--)
{
if(players[j].score>players[j-1].score)
{
player tmp;

tmp=players[j];
players[j]=players[j-1];
players[j-1]=tmp;
}
}
}
}

int partition(int a[],int low,int high)
{int k,temp;
k=rand()%(high-low+1)+low;
temp=a[k];
a[k]=a[low];
while(low<high)
{while(low<high&&a[high]>=temp)--high;
a[low]=a[high];
while(low<high&&a[low]<=temp)++low;
a[high]=a[low];
}
a[low]=temp;
return low;
}

void qsort(int a[],int low,int high)
{int k;
if(low>=high)return;
k=partition(a,low,high);
qsort(a,low,k-1);
qsort(a,k+1,high);
}

排序时调用qsort函数即可,low与high参数设为待排序的数组的范围,例如对a[100]排序,则调用qsort(a,0,99);