Официальный сайт студ.городка НГТУ
Программирование и БД » Помогите исправить ошибку 

#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

#2  02.03.11 06:58

Qks
Профиль

Re: Помогите исправить ошибку

Если не поздно то  вот:  d=(d+1)/2;
И убери ; после } - хоть и работает, но смотриться странно.

Offline

#3  02.03.11 14:34

Re: Помогите исправить ошибку

Qks, , спасибо!

Offline

Программирование и БД » Помогите исправить ошибку 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.024 сек.
Выполнено 14 запросов.