Ниже код работает для Array {4 5 3 7 2}, но не работает для другого тестового примера, указанного на сайте HackerRank. Что такое ошибка в моем коде? Я делаю что-то неправильно, сливая два массива a1 [] и a2 [] в ar []?Что такое ошибка в коде раздела?
https://www.hackerrank.com/challenges/quicksort1
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>
void partition(int ar_size, int * ar) {
int a1[100], a2[100];
int p = ar[0];
int i=0, j=0 , k=0;
for(i=0; i<ar_size; i++){
if(ar[i] < p)
{
a1[j] = ar[i];
j++;
}
else if(ar[i] >= p){
a2[k] = ar[i];
k++;
}
}
i=0, j=0 , k=0;
while(a1[i]){
ar[i] = a1[j];
i++;
j++;
}
while(a2[k]){
ar[i] = a2[k];
i++;
k++;
}
for(i=0; i<ar_size; i++){
printf("%d ", ar[i]);
}
}
int main(void) {
int _ar_size;
scanf("%d", &_ar_size);
int _ar[_ar_size], _ar_i;
for(_ar_i = 0; _ar_i < _ar_size; _ar_i++) {
scanf("%d", &_ar[_ar_i]);
}
partition(_ar_size, _ar);
return 0;
}
Вы пытались запустить его с помощью различных тестовых стен самостоятельно? –
Я пробовал со многими делами. Это дает разные и неудобные результаты. Это дает правильный ответ для Array {4 5 3 7 2}. – Kikit
количество элементов '1≤n≤1000' – BLUEPIXY