1.简单排序
1.1 冒泡排序
#include<stdio.h>
#define ElementType int
void Swap(ElementType *a,ElementType *b)
{
ElementType temp;
temp=*b;
*b=*a;
*a=temp;
}
void Bubble_Sort(ElementType A[],int N)
{
int p,i;
for(p=N-1;p>=0;p--){
for(i=0;i<p;i++){
if(A[i]>A[i+1]){
Swap(&A[i],&A[i+1]);
}
}
}
}
int main()
{
int i,N=5;
ElementType A[5]={6,2,5,3,8};
for(i=0;i<N;i++){
printf("%d ",A[i]);
}
printf("\n");
Bubble_Sort(A,N);
for(i=0;i<N;i++){
printf("%d ",A[i]);
}
printf("\n");
return 0;
}
1.2 插入排序
#include<stdio.h>
#define ElementType int
void Insertion_Sort(ElementType A[],int N)
{
int p,i,tmp;
for(p=1;p<N;p++){
tmp=A[p];
for(i=p;i>0&&A[i-1]>tmp;i--){
A[i]=A[i-1];
}
A[i]=tmp;
}
}
int main()
{
int i,N=5;
ElementType A[5]={6,2,8,5,3};
for(i=0;i<N;i++){
printf("%d ",A[i]);
}
printf("\n");
Insertion_Sort(A,N);
for(i=0;i<N;i++){
printf("%d ",A[i]);
}
printf("\n");
return 0;
}
2.希尔排序
void Shell_Sort(ElementType A[],int N)
{
int D,P;
for(D=N/2;D>0;D/=2){
for(P=D;P<N;P++){
Tmp=A[P];
for(i=P;i>=D&&A[i-D]>Tmp;i-=D){
A[i]=A[i-D];
}
A[i]=Tmp;
}
}
}