Алгоритмы сортировки массивов.Реализуйте алгоритмы сортировок данных массивов - C (СИ)
Формулировка задачи:
Задания к лабораторной работе.
Выполните приведенные ниже задания.
1. Даны два целочисленных массива
2. Реализуйте алгоритмы сортировок данных массивов.
3. Сформировать третий массив на основе данных, который также упорядочен и представляет операцию с элементами исходных массивов:
• объединение (содержит числа, принадлежащие хотя бы одному из множеств);
• перечисление (числа, принадлежащие обоим множествам);
• разность (числа, принадлежащие первому множеству, но не второму);
• симметричную разность (объединение разностей множеств).
Диапазон массивов (400 - +600)
Методы сортировки
1)прямым выбором.
2)быстрая сортировка.
До этого мы решали задачки в вводом и выводом массивов и вот те на,с помощью друзей написал все кроме 2 последних пунктов,а также есть некое количество ошибок.
P.s В книгах ничего особо найти не смог.
Помогите грамотно расставить комментарии,чтоб я сам в любой момент понимал что к чему и кто знает как сделать разность и симметричную разность?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "stdafx.h"
void PryamoyVibor (int* a,int n)
{
int i,j,k;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
j=a[k];
a[k]=a[i];
a[i]=j;
}
}
template<class T>
void quickSortR(T* b, long n) {
long i = 0, j = n;
T temp, p;
p = a[ n>>1 ];
do {
while ( b[i] < p ) i++;
while ( a[j] > p ) j--;
if (i <= j) {
temp = b[i]; b[i] = b[j]; b[j] = temp;
i++; j--;
}
} while ( i<=j );
if ( j > 0 ) quickSortR(a, j);
if ( n > i ) quickSortR(a+i, n-i);
}
int main()
{const int n=20;
int a[n],b[n],c[40],d[40],i,j,k,q,w,r,count=1;
printf("Pervonachalnii Masiv a[%d]: \n",n);
for(i=0;i<n;i++)
{
a[i]=0+rand() % 600;
printf("d",a[i]);
}
printf("Pervonachalnii Masiv b[%d]: \n",n);
for(i=0;i<n;i++)
{
b[i]=0+rand()%600;
printf("d",b[i]);
}
PryamoyVibor (a,n);
printf("\n \n Massiv a[%d],otsortirovannii PryamoyVibor: \n ",n);
for(i=0;i<n;i++)
printf("d",a[i]);
quickSortR (b,n);
printf("\n \n Massiv b[%d],otsortirovannii metodom quickSortR: \n",n);
for(i=0;i<n;i++)
printf(" %d ",b[i]);
printf("%d",b[i]);
for(i=0;q=0;i<n;i++)
c[q++]=a[i];
for(j=0;j<n;j++)
c[q++]=b[j];
quickSortR(c,q);
int temp=c[0];
for(i=1;i<q;i++)
{
if(c[i]!=temp)
{
for(j=i+1;j<q;j++)
if(c[i]=c[j])
c[j]=temp;
count++;
}
}
count=0;
for(i=1;i<q;i++)
if(c[i]!=c[0])
c[++count]=c[i];
printf("\n \n Peresechenie massivov a{%d] i b[%d] (%d elementov): \n",n,n,count+1);
for(i=0;i<count;i++)
printf("%d",c[i]));
for(i=0;w=0;i<n;i++)
if(a[i]=b[j])
d[w++]=a[i];
printf("Peresechenie massivov a{%d] i b[%d] (%d elementov): \n" n,n,w);
for(i=0;i<w;i++)
printf("%d",d[i]);
getch();
return 0;
}
....
Решение задачи: «Алгоритмы сортировки массивов.Реализуйте алгоритмы сортировок данных массивов»
textual
Листинг программы
template<class T>