小单同学shan 2022-01-25 14:31 采纳率: 100%
浏览 31
已结题

c快速排序写完数据不对,请帮我看看哪里出问题了

问题遇到的现象和发生背景

快速排序

问题相关代码,请勿粘贴截图

```c++
//快速排序
#include<iostream>
#include<cstdio>
using namespace std;


 int partition(int arr[],int p,int r){//分割扫描 
    int pivot=arr[p];
    int sp=p+1;             //扫描指针 
    int bigger=r;           //右侧固定指针
    while(sp<=bigger){
        if(arr[sp]<=pivot){
            sp++;
        }else {
            swap(arr[sp],arr[bigger]);
            bigger--;
        }
    }
    swap(arr[p],arr[bigger]); 
    return bigger;
}

 void quicksort(int arr[],int p,int r)//快速排序 递归
{
 if(p<r)
 {
 int q=partition(arr,p,r);
 partition(arr,p,q-1);
 partition(arr,q+1,r);
}
 } 

int main()
{
 
 int arr[]={9,15,27,11,100};

 int len=sizeof(arr)/sizeof(arr[0]);
  

 quicksort(arr,0,len-1);
 for(int i=0;i<len;i++){
     printf("%d,",arr[i]);
 }
 
 return 0;
 
 } 

```

运行结果及报错内容

他会把9替换成0???
结果是0.5.11.27.100

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • Dana_ranmo 2022-01-25 17:36
    关注

    你29行貌似会有q-1<p的情况,试试在partition函数里面加一个判断,p<r再执行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 创建了问题 1月25日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改