排序算法
时间:2010-09-04 来源:chengbin_liu
/* ************************************************************************
* Filename: insertSort.c
* Description:
* Version: 1.0
* Created: 09/04/2010 02:51:54 PM
* Revision: none
* Compiler: gcc
* Author: chengbin_liu,
* Company:
* ************************************************************************/ #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void print_array(int a[],int len)
{
int i;
for( i=0;i<len;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
//==============================================
//insert sort
void insert_sort(int a[],int len)
{
int i,j,temp;
for(i=1;i<len;i++)
{
temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
//===============================================
//shell sort
void shellsort(int a[],int len)
{
int h,i,j,temp;
for(h=len/2;h>0;h=h/2)
{
for(i=1;i<len;i++)
{
temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
}
//=============================================
//bubble sort
void bubble_sort(int a[],int len)
{
int i=0;
int j=0;
int temp=0;
for(i=0;i<len;i++)
{
for(j=0;j<len-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
//==============================================
//quick sort
void quick_sort(int a[],int low,int high)
{
int i,j,temp;
if(low <high)
{
temp=a[low];
i=low;
j=high;
while(i<j)
{
while(i<j && a[j]>=temp)
j--;
if(i<j)
a[i++]=a[j];
while(i<j && a[i]<=temp)
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=temp;
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}
//=============================================
//select sort
void select_sort(int a[],int len)
{
int i,j,x,l;
for(i=0;i<len;i++)
{
x=a[i];
l=i;
for(j=i;j<len;j++)
{
if(a[j]<x)
{
x=a[j];
l=j;
}
}
a[l]=a[i];
a[i]=x;
}
}
//==============================================
int main()
{
int a[]={5,3,6,8,2,1,4,7,9};
printf("befroe sort is:\n");
print_array(a,9);
//insert_sort(a,9);
//shellsort(a,9);
bubble_sort(a,9);
//quick_sort(a,0,8);
//select_sort(a,9);
printf("last sort is:\n");
print_array(a,9);
return 0;
}
* Filename: insertSort.c
* Description:
* Version: 1.0
* Created: 09/04/2010 02:51:54 PM
* Revision: none
* Compiler: gcc
* Author: chengbin_liu,
* Company:
* ************************************************************************/ #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void print_array(int a[],int len)
{
int i;
for( i=0;i<len;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
//==============================================
//insert sort
void insert_sort(int a[],int len)
{
int i,j,temp;
for(i=1;i<len;i++)
{
temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
//===============================================
//shell sort
void shellsort(int a[],int len)
{
int h,i,j,temp;
for(h=len/2;h>0;h=h/2)
{
for(i=1;i<len;i++)
{
temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
}
//=============================================
//bubble sort
void bubble_sort(int a[],int len)
{
int i=0;
int j=0;
int temp=0;
for(i=0;i<len;i++)
{
for(j=0;j<len-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
//==============================================
//quick sort
void quick_sort(int a[],int low,int high)
{
int i,j,temp;
if(low <high)
{
temp=a[low];
i=low;
j=high;
while(i<j)
{
while(i<j && a[j]>=temp)
j--;
if(i<j)
a[i++]=a[j];
while(i<j && a[i]<=temp)
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=temp;
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}
//=============================================
//select sort
void select_sort(int a[],int len)
{
int i,j,x,l;
for(i=0;i<len;i++)
{
x=a[i];
l=i;
for(j=i;j<len;j++)
{
if(a[j]<x)
{
x=a[j];
l=j;
}
}
a[l]=a[i];
a[i]=x;
}
}
//==============================================
int main()
{
int a[]={5,3,6,8,2,1,4,7,9};
printf("befroe sort is:\n");
print_array(a,9);
//insert_sort(a,9);
//shellsort(a,9);
bubble_sort(a,9);
//quick_sort(a,0,8);
//select_sort(a,9);
printf("last sort is:\n");
print_array(a,9);
return 0;
}
相关阅读 更多 +