#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
void sort(int* x, int n);
void prnt(int* x, int n);
void arinv(int* x, int n);
void arnop(int* x, int n);
void (*fp)(int* x, int n);
int main(){
const int n=10;
int x[n]={9,5,28,76,2,12,25,40,13,36};
int y[n],i;
i=0;
while(i<n)y[i]=x[i++];
fp=arnop;
sort(y,n);
prnt(y,n);
i=0;
while(i<n)y[i]=x[i++];
fp=arinv;
sort(y,n);
prnt(y,n);
return(0);
}
void sort(int* x, int n){
int i=1, j, t;
while(i<n){
j=i++;
while(j--)
if(x[j]>x[j+1]){
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
else break;
}
fp(x,n);
}
void prnt(int* x, int n){
int i=0;
cout<<"\n";
while(i<n)
printf("%4d",x[i++]);
}
void arinv(int* x, int n){
int i=0, t;
while(i<n/2){
t=x[i];
x[i]=x[n-i-1];
x[n-i-1]=t;
i++;
}
}
void arnop(int* x, int n){
}
void quicksort(int num[] , int left ,int right ){
int i,j,x,temp;
i=left; j=right ; x= num[(left+right)/2];
do{
while(num[i]<x && i<right)
i++;
while(x<num[j] && j>left)
j--;
if(i<=j){
temp=num[i];
num[i]= num[j];
num[j]=temp;
i++;
j--;
}
}while(i<=j);
if(left < j)
quicksort(num , left ,j);
if( i<right)
quicksort(num , i ,right);
}
void sort2(int* x, int n){
int i=1, j=6, t;
while(i<n/2){
j=i++;
while(j--)
if(x[j]>x[j+1]){
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
else break;
}
fp(x,i);
i=5;
while(i<n){
j=i++;
while(j--)
if(x[j]>x[j+1]){
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
else break;
}
fp(x,n/2);
}