<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">//*********************</span></span>
<span style="font-size:18px;">//冒泡法排序
#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,temp;
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<N;i++) //冒泡排序
{
for(j=0;j<N-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排序后:\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//***********************************
//冒泡法排序
#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,temp;
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=N;i>0;i--) //冒泡排序
{
for(j=0;j<N;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排序后:\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//*************************
//选择法排序
#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,temp;
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<N-1;i++) //选择法排序
{
for(j=i+1;j<N;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//*******************
//直接插入排序
#include<stdio.h>
#define N 6
int main()
{
int a[N],i,j,temp;
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<N;i++)
{
if(a[i]<a[i-1])
{
temp=a[i];
for(j=i-1;j>=0&&temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//******************************
//直接插入排序
#include<stdio.h>
#define N 6
int main()
{
int a[N],i,j;
for(i=1;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=2;i<N;i++)
{
if(a[i]<a[i-1])
{
a[0]=a[i];
for(j=i-1;a[j]>a[0];j--)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
}
for(i=1;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//**********************
//直接插入排序
#include<stdio.h>
#define N 6
int main()
{
int a[N],i,j;
for(i=1;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=2;i<N;i++)
{
if(a[i]<a[i-1])
{
a[0]=a[i];
a[i]=a[i-1];
for(j=i-2;a[j]>a[0];j--)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
}
for(i=1;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//*******************
//希尔法排序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 30
int main()
{
int a[N],i,j,dk;
srand( time(NULL) );
for(i=0;i<N;i++)
{
a[i+1]=1+rand()%20;
}
printf("Before Sort:\n");
for(i=1;i<N;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
//希尔法排序
for(dk=(N-1)/2;dk>=1;dk=dk/2)
{
for(i=dk+1;i<N;i++)
{
if(a[i]<a[i-dk])
{
a[0]=a[i];
for(j=i-dk;j>0&&a[0]<a[j];j-=dk)
{
a[j+dk]=a[j];
}
a[j+dk]=a[0];
}
}
}
printf("After Sort:\n");
for(i=1;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
//**************************
//折半插入排序
#include<stdio.h>
#define N 6
int main()
{
int a[N],i,j,low,high,mid;
for(i=1;i<N;i++) //a[0]为哨兵位
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=2;i<N;i++)
{
a[0]=a[i];
low=1;
high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[0]<a[mid])
{
high=mid-1;
}
else
{
low=mid+1;
}
}
for(j=i-1;j>=high+1;j--)
{
a[j+1]=a[j];
}
a[high+1]=a[0];
}
for(i=1;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
</span>
这里只举实例,算法就不写出来了,有空的时候会补充上。