Вы находитесь на странице: 1из 10

shakersort

void shaker(int a[1000])


{

int i,j,v;
for(i=2;i<=N;i++)
{
v=a[i];
j=i;
while(a[j-1]>v){
a[j]=a[j-1];
j--;
}
a[j]=v;
}

}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
shaker(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);
}

shellsort
void shellsort(int a[1000])
{

int i,j,h,v;
for(h=0;h<N/9;h=3*h+1);
for(;h>0;h/=3)
for(i=h+1;i<N;i+=1)
{
v=a[i];
j=i;
while(j>h && a[j-h]>v)
{
a[j]=a[j-h];
j-=h;
}
a[j]=v;
}
}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
shellsort(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);

Bubble
void bubble(int a[1000])
{

int i,j,t;
for(i=N;i>=1;i--)
for(j=2;j<=i;j++)
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
bubble(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
sortare prin insertie//insertsort
void insertion(int a[1000])
{clock_t start=clock();
int i,j,v;
for(i=2;i<=N;i++)
{
v=a[i];
j=i;

while(a[j-1]>v){
a[j]=a[j-1];
j--;
}
a[j]=v;
}
}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
insertion(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);

selectsort
void sel_sort(int a[1000])
{clock_t start=clock();
int i , j , k;
int x;
for ( i = 0 ; i < N - 1 ; i++ )
{
k = i;
x =a[ i ];
for ( j = i + 1 ; j < N ; j++ )
if ( a[ j ] < x )

{
x = a[ j ];
k = j;
}
a[ k ] = a[ i ];
a[ i ] = x;
}
}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
sel_sort(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);

radixsort
void radixsort(int *a,int n)
{
int i,b[MAX],m=0,exp=1;
for(i=0;i<n;i++)
{
if(a[i]>m)
m=a[i];
}

quicksort
void qSort(int vector[1000],int st,int dr)
{clock_t start=clock();
int temp,min,max,mijl;

mijl = vector[st+(dr-st)/2]; //luam mijlocul intervalului


min = st; max = dr;
do
{
while(vector[min] < mijl) min++;
while(vector[max] > mijl) max--;

//crescator
//crescator

if(min <= max)

//interschimbare

{
temp = vector[min];
vector[min++] = vector[max];
vector[max--] = temp;
}
}while(min <= max);

//la fiecare pas sortam "mai bine" intervalul st-dr

//cand numai avem ce face schimbam intervalul


if(st < max) qSort(vector,st,max); //crescator
if(dr > min) qSort(vector,min,dr); //crescator
}
int main()
{
int a[N],i;

for(i=0;i<N;i++)
a[i]=rand()%N;
qSort(a,0,1000);
for(i=0;i<N;i++)
printf("%d ",a[i]);

while(m/exp>0)
{
int bucket[10]={0};
for(i=0;i<n;i++)
bucket[a[i]/exp%10]++;
for(i=1;i<10;i++)
bucket[i]+=bucket[i-1];
for(i=n-1;i>=0;i--)
b[--bucket[a[i]/exp%10]]=a[i];
for(i=0;i<n;i++)
a[i]=b[i];
exp*=10;

printf("\nPASS
print(a,n);

}
}

: ");

Heapsort
void shift(int a[1000], int l , int r ) /* functie ajutatoare pentru heap_sort */
{
int i , j;
int x;
int ret;
i = l;
j = 2 * i;
x = a[ i ];
ret = 0;
while ( j <= r && !ret )
{
if ( j < r )
if ( a[ j ] <a[ j + 1 ] )
j++;
if ( x < a[ j ] )
{
a[ i ] = a[ j ];
i = j;
j = 2 * i;
}
else
ret = 1;
}
a[ i ] = x;
}

void heap_sort(int a[1000])


{
int l , r;
int x;
l = N / 2;
r = N - 1;
while ( l > 0 )
{
l--;
shift( a,l , N - 1 );
}
while ( r > 0 )
{
x = a[ 0 ];
a[ 0 ] = a[ r ];
a[ r ] = x;
r--;
shift( a,0 , r );
}
}
int main(){
int a[N],i;
for(i=0;i<N;i++)
a[i]=rand()%N;
heap_sort(a);

for(i=0;i<N;i++)
printf("%d ",a[i]);
// printf("%lf", (stop-start)/CLOCKS_PER_SEC);
}

Вам также может понравиться