繁体   English   中英

quickSort分段错误(核心已转储)

[英]quickSort segmentation fault (core dumped)

我知道我的问题有多个答案,我知道为什么会这样,但是我的主要问题是如何克服此错误。 我知道我正在尝试访问我无权访问的内存,但是我只是看不到我在做什么。

#include <iostream>
#include <string> 
#include <stdlib.h>
using namespace std;

int arr[] = {4,5,2,1,3};
int lengd = sizeof(arr)/sizeof(arr[0]);

void swapNumber(int arr[], int i, int j){
     int tmp = arr[i];
     arr[i] = arr[j];
     arr[j] = tmp;
}

void partition(int arr[], int i, int j){
     int pivot = arr[j];
     while (i <= j) {
          while (arr[i] < pivot){
               i++;
          }
          while (arr[j] > pivot){
               j--;
          }
          if (i <= j) {
               swapNumber(arr, i, j);
               i++;
               j--;
          }
     }
}

void quickSort(int arr[], int left, int right) {
      int i = left;
      int j = right;

      partition(arr,left,right);


      if (left < j){
          quickSort(arr,left, j);
      }
      if (i < right){
          quickSort(arr, i, right);
      }
}

int main(){
    quickSort(arr,0, lengd-1);

    for(int i = 0; i < 5; i++){
        cout << arr[i] << endl;
     }
}

当我在quickSort函数内部运行quickSort函数时,会发生错误。 我不知道该怎么办。

由于您的数字不会在partition函数中被修改,因此您应该更改其签名以接收引用

void partition(int arr[], int& i, int& j)

一切都会正常。

使用调试器或适当放置的控制台消息很容易发现此类缺陷!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM