Imagen:
Código:
ShakerSort.cpp:
#include "ShakerSort.h"
void main(){
ShakerSort SK;
int n;
do{cout<<"Cuantos elementos desea ingresar: ";cin>>n;}while(n<1||n>100);
for(int i=0;i<n;i++){
cout<<endl<<"Dato["<<i+1<<"]: ";cin>>SK.vector[i];
}
system("cls");
cout<<endl<<endl<<"Vector original:"<<endl<<endl;
for(int i=0;i<n;i++){
cout<<SK.vector[i]<<" ";
}
SK.shakerSort(SK.vector,n);
cout<<endl<<endl<<"Vector Ordenado Con El Metodo Shaker Sort (Sacudida):"<<endl<<endl;
for(int i=0;i<n;i++){
cout<<SK.vector[i]<<" ";
}
system("pause>null");
}
ShakerSort.h:
#include <iostream>
#include <windows.h>
using namespace std;
class ShakerSort{
public:
int vector[100];
void shakerSort(int[] ,int );
};
void ShakerSort::shakerSort(int v[],int N){
int i = 0 , izq = 1 , der = N-1 , k = N-1 , aux = 0;
while( der >= izq ){
for( i = der ; i>= izq ; i-- )
if( v[i-1] > v[i]){
aux = v[i-1];
v[i-1]=v[i];
v[i]=aux;
k=i;
}
izq = k + 1;
for( i = izq ; i <= der ; i++)
if( v[i-1] > v[i] ){
aux = v[i-1];
v[i-1]=v[i];
v[i]=aux;
k=i;
}
der = k-1;
}
}
Descarga el código fuente desde aquí.