回 帖 发 新 帖 刷新版面

主题:请问大家这个问题

#include"stdio.h"
void quickSort(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;
   quickSort(a,left,i-1);/*递归左边*/
   quickSort(a,i+1,right);/*递归右边*/
}

void main()
{
    int a[7]={8,2,6,12,1,9,5};
    int i;
    quickSort(a,0,6);
    /*排好序的结果*/
    for(i=0;i<7;i++)
        printf("%4d",a[i]);
}

回复列表 (共1个回复)

沙发

#include"stdio.h"
void quickSort(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)/这条语句的意思是色么//*从右边开始往左边查找,一旦遇到一个比枢轴记录(temp)小的就退出循环*/
         j--;
      if(j>i) 
         a[i++]=a[j];)/这条语句的意思是色么//*找到的这个记录如果位置还在i位置的右边,则让它与枢轴记录交换
       while(a[i]<=temp && j>i))/*类似于第一个循环,但从左边往右边找*//这条语句的意思是色么/
          i++;
       if(j>i))/这条语句的意思是色么/
          a[j--]=a[i];
         
   }
   a[i]=temp;
   quickSort(a,left,i-1);/*递归左边*/
   quickSort(a,i+1,right);/*递归右边*/
}

void main()
{
    int a[7]={8,2,6,12,1,9,5};
    int i;
    quickSort(a,0,6);
    /*排好序的结果*/
    for(i=0;i<7;i++)
        printf("%4d",a[i]);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册