Помогите с сортировками пожалуйста!! В-13 -8 -10 5 6 -10 -3 9 -7 -7 -8

0 голосов
35 просмотров

Помогите с сортировками пожалуйста!!
В-13 -8 -10 5 6 -10 -3 9 -7 -7 -8


image

Информатика (12 баллов) | 35 просмотров
0

На каком языке программирования написать программу? Какой тип сортировки использовать?

0

все сортировки обменом вставкой выбором примерно так: 2 7 -7 -6 6 -1 0 7 6 8 и так -7 2 7 -6 6 -1 0 7 6 8

0

Так как язык программирования вы не написали, я предположил, что раз уровень студенческий, то это СИ.

Дан 1 ответ
0 голосов

#include
void sort(int in[], int a, int b) {
int i,j,mode;
if (a >= b) return;
for (i=a, j=b, mode=1; i < j; mode >0 ? j-- : i++) 
if (in[i] > in[j]) {                                                             
int c = in[i];
in[i] = in[j];
in[j] = c;                       
mode = -mode;                                               

sort(in, a, i-1);
sort(in, i+1, b); 
}    
int main(void) {
int m = 0;int x = 0;
int a[10] = {-8,-10,5,6,-10,-3,9,-7,-7,-8};
printf("\nИзначальный массив: ");
for (int i = 0; i < 10; i++) {
 printf("%i ", a[i]);
}
printf("\nМетод обменом (пузырьком): ");
for (int i = 0; i < 9; i++) {
 for (int j = 0; j < 9-i; j++) {
  if (a[j] < a[j + 1]) {
   m = a[j];
   a[j] = a[j + 1];
   a[j + 1] = m;
  }
  }
}
for (int i = 0; i < 10; i++) {
printf("%i ", a[i]);
}
printf("\nМетод вставкой: ");
for (int i = 0; i < 10; i++) {
x = a[i];
m = i;
while (m > 0 && a[m - 1] > x) {
a[m] = a[m - 1];
m = m - 1;
}
a[m] = x;} 
for (int i = 0; i < 10; i++) {
 printf("%i ", a[i]);
}
printf("\nМетод выбором: ");
for (int i = 0; i < 10; i++) {
m = i;
for (int j = i + 1; j < 10; j++) {
if (a[j] > a[m]) {
m = j;
}
}
x = a[i];
a[i] = a[m];
a[m] = x;
}
for (int i = 0; i < 10; i++) {
printf("%i ", a[i]);
}
printf("\nМетод разделением (qsort): ");
sort(a, 0, 9);
for (int i = 0; i < 10; i++) {
printf("%i ", a[i]);
}
return 0;
}

(915 баллов)