Методы Сортировки(быстрая Сортировка)

Тема в разделе "MS Visual C++", создана пользователем Seriy1994, 17 янв 2013.

  1. Seriy1994

    Seriy1994 New Member

    Регистрация:
    15 янв 2013
    Сообщения:
    0
    Симпатии:
    0
    Помогите! Написал программу по заданию:
    Ввести массив А. В массив В перенести все элементы массива А, имеющие нечетный индекс, справа от которых расположены элементы с нечетным значением, а слева -с четным. Массив В отсортировать по убыванию, используя быструю сортировку.

    Вот код!
    #include "stdafx.h"
    #include <iostream>
    #include "conio.h"
    #include "stdio.h"
    #include "locale.h"
    #include <time.h>

    void quickSort(int B, int left, int right);
    //От А к В
    int* AtoB(int* A,int n)
    {int* B=0;
    B=new int [n];
    for (int i=1;i<n-1;i++)
    {
    if ((i%2!=0)&&(A[i+1]%2!=0)&&(A[i-1]%2==0))
    {
    B=A;
    printf("%d ",B);
    }
    }/*
    quickSort(B, 0, n);
    for( int i=0;i<n;i++)
    printf("%d ",B);*/
    return B;
    }
    //Сортировка быстрая
    void quickSort(int B[], int left, int right) {
    int i = left, j = right;
    int tmp;
    int pivot = B[ (left + right) / 2];
    /* partition */
    while (i <= j) {
    while (B > pivot)
    i++;
    while (B[j] < pivot)
    j--;
    if (i <= j) {
    tmp = B;
    B = B[j];
    B[j] = tmp;
    i++;
    j--;
    }
    };
    /* recursion */
    if (left < j)
    quickSort(B, left, j);
    if (i < right)
    quickSort(B, i, right);

    }

    int _tmain(int argc, _TCHAR* argv[])
    {setlocale(0, "Russian");
    int n=0, *A=0, *B=0;
    printf("Введите размерность массива: ");
    scanf("%d", &n);
    A=new int[n];

    printf("");
    for (int i = 0; i<n; i++){
    printf("A[%d]=",i);
    scanf("%d", &A);
    }
    printf("\n Исходный массив A: ");
    for(int i = 0; i < n; i++)
    printf("%d ", A);
    printf("\n\n");
    printf("Массив B: ");
    AtoB(A,n);
    quickSort(B, 0, n-1);
    for(int i=0;i=n-1;i++)
    printf("%d",B);

    getch();
    return 0;
    }

    Но в процессе выполнения доходит до сортировки и выдаёт ошибку типа:"Необработанное исключение в "0x010e1148" в "Сортировка.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000008"."
    Помогите пожалуйста!!! В чём ошибка?
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36


    элементов в массиве В всегда будет меньше чем в А.
    первый элемент, который ту поместишь в В - это В[1]
    В[0] не инициализирован.

    программа не верна, дальше я смотреть не стал.
     
Загрузка...
Похожие Темы - Методы Сортировки(быстрая Сортировка)
  1. kuzduk
    Ответов:
    0
    Просмотров:
    349
  2. Катюша1603
    Ответов:
    5
    Просмотров:
    1.494
  3. gardlok
    Ответов:
    0
    Просмотров:
    1.367
  4. V88
    Ответов:
    3
    Просмотров:
    3.463

Поделиться этой страницей