ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Сортировки массивов
Просматривается весь массив “сверху вниз” и меняются стоящие рядом элементы в том случае, когда “нижний” элемент меньше, чем “верхний”. Таким образом, после первого просмотра, самый “тяжелый” элемент массива попадает на самое последнее место, т.е. выталкивается в низ. Далее алгоритм повторяется для оставшихся n-1 элементов. #include<stdio.h> Void main() { const int n=6; int x[n],i,buf; for(i=0;i<n;i++){ printf("x[%d]=",i); scanf("%d",&x[i]); } for(int j=1;j<=n;j++){ for(i=0;i<n-1;i++){ if(x[i]>x[i+1]){ buf=x[i]; x[i]=x[i+1]; x[i+1]=buf; } } } for(i=0;i<n;i++) printf("x[%d]=%d\n",i,x[i]); }
Последовательно проходим весь массив, каждый раз сравнивая i-ый элемент со всеми, находящимися после него, и, найдя наименьший, переставляет его с i-им. Таким образом, после первого просмотра на первом месте оказывается наименьший элемент массива. #include<stdio.h> Void main() { const int n=6; int x[n],i,buf,j,k; for(i=0;i<n;i++){ printf("x[%d]=",i); scanf("%d",&x[i]); } for(i=0;i<=n-1;i++){ k=i; for(j=i+1;j<n;j++){ if(x[k]>x[j]) k=j; } buf=x[i]; x[i]=x[k]; x[k]=buf; } for(i=0;i<n;i++) printf("x[%d]=%d\n",i,x[i]); }
На начальном этапе сравниваются элементы отстоящих на n/2 друг от друга и если есть необходимость, происходит перемещение этих элементов. Причем сравнение элементов на расстоянии n/2 происходит до тех пор, пока не было ни одного обмена. Далее сравниваются элементы, отстоящие на n/4 и т.д. пока не будут сравниваться соседние элементы. Данная сортировка считается высоко производительной. #include<stdio.h> Void main() { const int n=6; int x[n],i,buf,j,k,k1; for(i=0;i<n;i++){ printf("x[%d]=",i); scanf("%d",&x[i]); } for(k=n/2;k>0;k/=2){ do{ k1=0; for(i=0,j=k;j<n;i++,j++){ if(x[i]>x[j]){ buf=x[i]; x[i]=x[j]; x[j]=buf; k1++; } } }while(k1); } for(i=0;i<n;i++) printf("x[%d]=%d\n",i,x[i]); }
#include<stdio.h> #define MAXSIZE 100 void main(){ Не нашли, что искали? Воспользуйтесь поиском:
|