#1 02.03.11 00:21
Помогите исправить ошибку
Метод Шелла.
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
int ShellSort(int *array,int len)
{
long d=len,i,j;
int c;
do //выполняем прграмму до тех пор
{
d=d/2;
i=0; //нумерация массива
while ((j=i+d)<len) // пока j меньше длинны массива (len) - выполняем цикл
{
if (array[i]>array[j]) //если элемент массива array[i] больше чем элемента массива array[j] то
{
c=array[i]; //производим замену
array[i]=array[j];
array[j]=c;
};
i++; //увеличиваем i на единицу
};
}
while (d>1); // пока d>1, как только d станет = или < 1, то выходим из цикла
};
int main()
{
int k[10]={4,-5,2,7,3,-10,6,-3,10,9};
int i;
printf("\n\n\n");
for (i=0; i<10;i++) //цикл
printf(" %d ",k[i]); //вывод на экран начальный массив 4,-5,2,7,3,-10,6,-3,10,9
printf("\n");
ShellSort(k,10);
for (i=0; i<10;i++) //цикл
printf(" %d ",k[i]); //вывод на экран обработанный массив по возрастанию
printf("\n");
getch();
return 0;
};
на экране:
4,-5,2,7,3,-10,6,-3,10,9 - начальный массив
-10,-5,-3,3,2,4,6,7,9,10 - отсортированный по возрастанию, но 2-ка стоит не там
где ошибка, помогите пожалуйста. Завтра сдавать.
Offline

