Вот программа, обеспечивающая именно требуемое и работающая заметно быстрее полных сортировок:
double M[N];
int n, k = N;
//...
for ( n=0; n < k; ){
if ( M[n] < 0 )
++n;
else {
--k;
if ( M[k] < 0 ){
double T = M[n]; M[n] = M[k]; M[k] = T;
}
}
}
Другие языки программирования и технологии
Нужно написать программу на языке С
т. е. после сортировки элементы одного знака должны занимать те же позиции в массиве?
допустим было вот так:
6 -2 4 -3 5 -8
отсортировали и стало вот так:
4 -8 5 -3 6 -2
или нифига подобного и должно получиться вот так:
-8 -3 -2 4 5 6
и в чём проблема?
допустим было вот так:
6 -2 4 -3 5 -8
отсортировали и стало вот так:
4 -8 5 -3 6 -2
или нифига подобного и должно получиться вот так:
-8 -3 -2 4 5 6
и в чём проблема?
int main(){
int aaa[15], ii, kk, ssign, bbb;
// заполним массив aaa
ssign = 1;
for( ii = 0; ii < 15; ii++) {
aaa[ii]=ii*ssign;
printf("%d ", aaa[ii]);
ssign = -ssign;
}
printf("\n");
// переместим отрицательные к началу массива
for( ii = 0; ii < 15; ii++) {
if(aaa[ii]>0) {
bbb = aaa[ii];
for(kk=ii;kk<15;kk++) {
if(aaa[kk]<0){
aaa[ii]=aaa[kk]; // тут и меняем
aaa[kk]=bbb;
break;
}
}
if (kk==15){
break; // отрицательные элементы закончились)) )
}
}
}
// распечатаем результат
for( ii = 0; ii < 15; ii++) {
printf("%d ", aaa[ii]);
}
return 0;
}
а вот результат работы:
result: Success time: 0s memory: 1720 kB returned value: 0
input: no
output:
0 -1 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14
0 -1 -3 -5 -7 -9 -11 -13 8 2 10 6 12 4 14
int aaa[15], ii, kk, ssign, bbb;
// заполним массив aaa
ssign = 1;
for( ii = 0; ii < 15; ii++) {
aaa[ii]=ii*ssign;
printf("%d ", aaa[ii]);
ssign = -ssign;
}
printf("\n");
// переместим отрицательные к началу массива
for( ii = 0; ii < 15; ii++) {
if(aaa[ii]>0) {
bbb = aaa[ii];
for(kk=ii;kk<15;kk++) {
if(aaa[kk]<0){
aaa[ii]=aaa[kk]; // тут и меняем
aaa[kk]=bbb;
break;
}
}
if (kk==15){
break; // отрицательные элементы закончились)) )
}
}
}
// распечатаем результат
for( ii = 0; ii < 15; ii++) {
printf("%d ", aaa[ii]);
}
return 0;
}
а вот результат работы:
result: Success time: 0s memory: 1720 kB returned value: 0
input: no
output:
0 -1 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14
0 -1 -3 -5 -7 -9 -11 -13 8 2 10 6 12 4 14
че сложного? пузырьком!
Тебе здесь код писать что ли?
Похожие вопросы
- Информатики, выручайте, любые 5 заданий, пожалуйста!!! Нужно написать программу на языке паскаль.
- помогите понять-программа, которая переводит новую написанную программу на языке, понятном прогр
- Напишите программу на языке Паскаль для решения задачи:
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?
- Нужно написать программу на паскале
- Помогите написать программу на языке програмирования КУМИР
- Помогите пожалуйста написать программу на языке программирования AssemblerКто первый поможет сделать правильно10балов+50
- Помогите пожалуйста написать программу на языке Borland С++ Builder
- Нужно написать программу, на нахождения бессектрисы треугольника, если пользователем задано длину плз напишите прогу С++