排序经常会在一个程序里面用到,但当排序范围较大时,时间复杂度所带来的问题就显得尤其明显,今天就总结了一个排序的自定义函数,有点小复杂,但是执行效率却是杠杠的,在竞赛里也会大幅减小超时的可能。
话不多说,奉上代码:
void sort(int a[],int left ,int right)
{
int i,j,temp;
i=left;
j=right;
temp=a[left];
if(left>right) return;
while(i!=j)
{
while(a[j]>=temp&&j>i)
j--;
if(j>i)
a[i++]=a[j];
while(a[i]<=temp&&j>i)
i++;
if(j>i)
a[j--]=a[i];
}
a[i]=temp;
sort(a,left,i-1);
sort(a,i+1,right);
}
这个函数的含义是:将某一数组从第几下标的元素到第几下标的元素之间的范围内进行从小到大的排序。这个函数可以做到交换数字的次数尽量少。