我是扬帆起航 发表于 2022-11-6 18:59:39

这个代码块的作用

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-11-6 21:39:00

本帖最后由 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]
查看完整版本: 这个代码块的作用