Сортировки массивов
- Сортировка массива по возрастанию, пузырьковым методом
Просматривается весь массив “сверху вниз” и меняются стоящие рядом элементы в том случае, когда “нижний” элемент меньше, чем “верхний”. Таким образом, после первого просмотра, самый “тяжелый” элемент массива попадает на самое последнее место, т.е. выталкивается в низ. Далее алгоритм повторяется для оставшихся 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]);
}
- Сортировка массива по методу Шелла, по убыванию.
- Введите два индекса, и поменять местами элементы.
- Ввести 20 мерный массив и отсортировать от 0 до 9 пузырьковым методом по возрастанию, и от 10 до 19 нахождением минимального элемента.
- Введите два массива целых чисел. Второй массив упорядочен по возрастанию своих значений. Определить, какие числа первого массива входят и во второй массив.
#include<stdio.h>
#define MAXSIZE 100
void main(){
Не нашли, что искали? Воспользуйтесь поиском:
|