
Другие языки программирования и технологии
Программисты - совы, помогите!)) <СИ>
Разобрался с сортировкой массива по возрастанию\убыванию, но никак, блин, не доходит - каким образом можно провернуть это:


Примерно так:
int start = 0, end = n - 1;
for (int i = 1; i < n; ++i) {
int min = start;
for (int j = start + 1; j <= end; ++j) { if (arr[j] < arr[min]) { min = j; } }
swap(&arr[min], &arr[i % 2? start++ : end--]);
}
int start = 0, end = n - 1;
for (int i = 1; i < n; ++i) {
int min = start;
for (int j = start + 1; j <= end; ++j) { if (arr[j] < arr[min]) { min = j; } }
swap(&arr[min], &arr[i % 2? start++ : end--]);
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 27
void sort(int* begin, int* end, int (*comp)(int, int));
int gt(int a, int b){return a > b;}
int ls(int a, int b){return a < b;}
int main(void) {
int A[N];
srand(time(0));
for(int i = 0; i < N; i++){
A[i] = rand() % 100 + 1;
printf("%d ", A[i]);
}
printf("\n");
int down = 0, up = N;
while(down < up){
sort(&A[down], &A[up - 1], (up - down) % 2? gt : ls);
if((up - down) % 2) down++;
else up--;
}
for(int i = 0; i < N; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
void sort(int* begin, int* end, int (*comp)(int, int)){
for(int* i = begin; i <= end; i++){
for(int* j = i + 1; j <= end; j++){
if(comp(*i, *j)){
int tmp = *i;
*i = *j;
*j = tmp;
}
}
}
}
#include <stdlib.h>
#include <time.h>
#define N 27
void sort(int* begin, int* end, int (*comp)(int, int));
int gt(int a, int b){return a > b;}
int ls(int a, int b){return a < b;}
int main(void) {
int A[N];
srand(time(0));
for(int i = 0; i < N; i++){
A[i] = rand() % 100 + 1;
printf("%d ", A[i]);
}
printf("\n");
int down = 0, up = N;
while(down < up){
sort(&A[down], &A[up - 1], (up - down) % 2? gt : ls);
if((up - down) % 2) down++;
else up--;
}
for(int i = 0; i < N; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
void sort(int* begin, int* end, int (*comp)(int, int)){
for(int* i = begin; i <= end; i++){
for(int* j = i + 1; j <= end; j++){
if(comp(*i, *j)){
int tmp = *i;
*i = *j;
*j = tmp;
}
}
}
}
Похожие вопросы
- <<<<<<<<<<<<html>>>>>>>>>>>>...
- Mozila: HTML+CSS <col> не работает. В чем проблема?
- Перемещение < div > средствами JavaScript (см. внутри)
- <<<delphi,>>>
- Вопрос к сайто- строителям, что за теги <noindex> и зачем ими закрывать внешние ссылки?
- Вопрос C++. #include <iostream> using namespace std; int main() { int h; cout << "Vvedite chislo" <
- помоги с СИ++..
- Программисты с++ помогите за 20 минут! Прошу вас!
- помогите с си++, пожалуйста)
- В html-коде сайта прописано <meta>. Как и где прописать мета-теги для поисковиков?