Ich bekomme eine Nachricht, wenn ich versuche, das Programm zu starten. Warum?Sortierung Array nur mit while und wenn
Segmentation fault
mein Code:
#include <stdio.h>
void sort_array(int *arr, int s);
int main() {
int arrx[] = { 6, 3, 6, 8, 4, 2, 5, 7 };
sort_array(arrx, 8);
for (int r = 0; r < 8; r++) {
printf("index[%d] = %d\n", r, arrx[r]);
}
return(0);
}
sort_array(int *arr, int s) {
int i, x, temp_x, temp;
x = 0;
i = s-1;
while (x < s) {
temp_x = x;
while (i >= 0) {
if (arr[x] > arr[i]) {
temp = arr[x];
arr[x] = arr[i];
arr[i] = temp;
x++;
}
i++;
}
x = temp_x + 1;
i = x;
}
}
Ich denke, dass das Problem in der if
Aussage. Was denkst du? Warum passiert das? Ich denke, dass ich positiv mit dem Zeiger auf das Array verwende.
Vielen Dank!
'i' wird zu groß und verursacht einen Zugriff außerhalb des Bereichs, der * undefiniertes Verhalten * auslöst. – MikeCAT
Kompilieren Sie das Programm mit -g und führen Sie es unter gdb aus, dies zeigt Ihnen, wo es fehlschlägt – pm100
Versuchen Sie es mit der Methode [bubble sort] (https://en.wikipedia.org/wiki/Bubble_sort) (wie es verwendet wurde [ hier] (http://www.sanfoundry.com/c-program-sort-array-ascending-order/) um ein Array in aufsteigender Reihenfolge zu sortieren) – iRove