Smallzhou? 2021-06-09 15:57 采纳率: 0%
浏览 13

想问下各位大佬这个快速排序哪错了?执行程序没有结果

#include <stdio.h>

void QuickSort(int A[],int i,int j){

 int begin,end;

   begin= i;

   end=j;

 if(i<j){

  A[0]=A[i];

  while(i<j){

   while(i<j&&A[j]>A[0]) j--;

   A[i]=A[j];

      while(i<j&&A[i]<A[0]) i++;

   A[j]=A[i];

  }

     A[i]=A[0];

     QuickSort(A,begin,i-1);

     QuickSort(A,i+1,end);

 }

 I 

 

int main(void){

 int A[]={0,1,32,44,32,55,78,9,0,29,10};

 int i;

 QuickSort(A,1,10);

 for(i=1;i<11;i++)

 printf("%d ",A[i]);

 return 0;

}

 

  • 写回答

1条回答 默认 最新

  • shn_baby 2021-06-09 16:14
    关注

    你的代码在找到比标定值大和小之后交换的时候就出错了。

    建议你参照一下这个文章叭

    void Quick_Sort(int *arr, int begin, int end)
    {
        if(begin > end)
            return;
        int tmp = arr[begin];
        int i = begin;
        int j = end;
        while(i != j)
        {
            while(arr[j] >= tmp && j > i)
                j--;
            while(arr[i] <= tmp && j > i)
                i++;
            if(j > i)
            {
                int t = arr[i];
                arr[i] = arr[j];
                arr[j] = t;
            }
        }
        arr[begin] = arr[i];
        arr[i] = tmp;
        Quick_Sort(arr, begin, i-1);
        Quick_Sort(arr, i+1, end);
    }
    

    https://blog.csdn.net/qq_40941722/article/details/94396010

    评论

报告相同问题?

悬赏问题

  • ¥15 求一份STM32F10X的I2S外设库
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?
  • ¥50 寻找fpga的benchmark
  • ¥50 如何在arduino上,实现用4×4矩阵键盘按键控制2004显示屏输出图中显示功能的代码?
  • ¥15 P1口接8个发光二极管,利用定时计数器1编写程序
  • ¥20 keil5编译找不到.h文件该如何解决
  • ¥15 安卓EVS如何开启服务正常实现功能
  • ¥15 canal读取mysql时报错