冒泡排序:
#include<stdio.h>
int a[30];
void main()
{
int i,j,t;
for(i=0;i<30;i++)
{
a[i]=rand()%30;
printf("%d ",a[i]);
}
printf("\n");
for(i=29;i>0;i--)
{
for(j=1;j<=i;j++)
{
if(a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}
冒泡排序优化:
#include<stdio.h>
int a[30];
void main()
{
int t,i,j;
for(i=0;i<30;i++)
{
a[i]=rand()%30;
printf("%d ",a[i]);
}
printf("\n");
for(i=29;i>0;i--)
{
int flag=1;
for(j=1;j<=i;j++)
{
if(a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
flag=j;
}
}
i=flag;
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}
选择排序:
#include<stdio.h>
int a[30];
void main()
{
int t,i,j,max=0;
for(i=0;i<30;i++)
{
a[i]=rand()%30;
printf("%d ",a[i]);
}
printf("\n");
for(i=29;i>0;i--)
{
max=0;
for(j=1;j<=i;j++)
if(a[max]<a[j])
max=j;
t=a[max];
a[max]=a[i];
a[i]=t;
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}
插入排序:
#include<stdio.h>
int a[30];
void main()
{
int t,i,j,max=0;
for(i=0;i<30;i++)
{
a[i]=rand()%30;
printf("%d ",a[i]);
}
printf("\n");
for(i=1;i<30;i++)
{
j=i;
while(j>0&&a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
j--;
}
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}
插入排序 -----二分查找优化:
#include<stdio.h>
int a[30];
int insert(int index)
{
int i=0,j=index,mid;
while(i<j)
{
mid=(i+j)>>1;
if(a[index]<a[mid])
j=mid;
else i=mid+1;
}
return i;
}
void main()
{
int t,i,j,max=0;
for(i=0;i<30;i++)
{
a[i]=rand()%500;
printf("%d ",a[i]);
}
printf("\n");
for(i=1;i<30;i++)
{
int insert_index=insert(i);
int arr=a[i];
for(j=i;j>insert_index;j--)
a[j]=a[j-1];
a[insert_index]=arr;
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}