这个代码块的作用
e<stdio.h>void qick(int a[],int left,int right)
{
int i = 0,j = 0,tem,p;
i = left;
j = right;
p = a[(i + j) / 2];
while(i < j)
{
while(a < p)
i++;
while(a > p)
j--;
if(i <= j)
{
tem = a; //这个代码块有什莫用,可以详细解释一下吗
a = a;
a = tem;
i++;
j--;
}
}
if(left < j)
qick(a,left,j);
if(right > i)
qick(a,i,right);
}
int main(void)
{
int i,len;
int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
len = sizeof(array) / sizeof(array);
qick(array,0,len - 1);
for(i = 0;i < len;i ++)
{
printf("%d ",array);
}
return 0;
} 本帖最后由 ExiaGN001 于 2022-12-6 19:40 编辑
这是快速排序算法。
while(i < j)
{
if(i <= j)
{
tem = a[ i]; //这个代码块有什莫用,可以详细解释一下吗
a = a;
a = tem;
i++;
j--;
}
}
黑体部分是用来实现交换a,a的值、
整个被复制代码部分是将原数组变成两个部分,
第一部分的所有元素都<=p;
第二部分的所有元素都>=p;
再用此算法分别对两部分排序直至两部分均有序(仅剩1元素,一定有序)
页:
[1]