Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка, Метод прямого включения 
:(
    Опции темы
df_3
  Дата 10.5.2004, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 19.5.2003

Репутация: нет
Всего: 1



Есть массив его надо отсортировать методом прямого включения. Алгоритм я понял но вот чего-то с реализацией никак не выходит. Помогите плз может в коде ошибка


Код

void Straight_Insertion(int a[], int size){
int i,j,x;
for (i=2; i<size; i++)
   {
   x=a[i];
   j=i;
   a[0]=x;
     do {
      a[j]=a[j-1];
      j=j+1;      
        } while (a[j-1]>x);
       
        a[j]=x;
   }
    }

он то вылетает просто ничего не говоря то несколько раз печатет второй элемент массива
sad.gif

Это сообщение отредактировал(а) df_3 - 10.5.2004, 23:47


--------------------
ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ!
PM MAIL WWW MSN   Вверх
Kurt
Дата 11.5.2004, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Вобщем, вот тебе такая сортировка.
Извиняй за, возможно, "неСишный" стиль - я на Си мало пишу..
Короче, вот код (можно компилить и запускать):

Код

#include <stdio.h>

//собственно функция сортировки
void InsertSort(int A[], int size){

int j;
  int TmpVal;
for (int i=0; i<size; i++){
//ищем j - индекс в массиве, куда надо вставить элемент
   j = i;
     TmpVal = A[i];
//пока есть элементы, бОльшие, чем наш..
     while ((j>0) && (TmpVal<A[j-1])){
//сдвигаем их вправо
      A[j] = A[j-1];
        j--;
     };
//вставляем элемент в найденную позицию
     A[j] = TmpVal;
};
return;
};

void main(){
int n=10; //определим 10-элементный массив
  int* arr = new int[n];
//заполним его от большего к меньшему
  for (int i=0; i<n; i++){
   arr[n-i-1] = i;
  };

  printf("Before..\n");
  for (int i=0; i<n; i++){
   printf("%d ",arr[i]);
  };

//наша сортировка
  InsertSort(arr, n);

//смотрим, что получилось
  printf("\nAfter..\n");
  for (int i=0; i<n; i++){
   printf("%d ",arr[i]);
  };


delete[] arr;
getchar();
return;
}


Все. Надеюсь, хоть чем-то помог..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Artiom
Дата 11.5.2004, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: нет
Всего: 17



Инструкция do выполняется один раз до проверки условия продолжения цикла. Возможно в этом причина ошибок. и вообще по-моему у тебя a[0] теряется. ты его затираешь a[2]-ым.


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
df_3
Дата 12.5.2004, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 19.5.2003

Репутация: нет
Всего: 1



Огромное спасибо за помощь! smile.gif Я разобрался.


--------------------
ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ!
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.