#include<stdio.h>
int swap(int *a,int *b)
{
int t=*a;
*a=*b;
*b=t;
}
/*
冒泡排序的原理:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面,
逐次比较,直至将最大的数移到最后。最将剩下的N-1个数继续比较,将次大数移至倒数第二位。
依此规律,直至比较结束。
冒泡排序的代码如下:
*/
void bubble_sort(int a[], int n){
int i,j;
for(i=0;i<n-1;++i)
for(j=0;j<n-i-1;++j)
{
if(a[j]>a[j+1])
swap(&a[j],&a[j+1]);
}
}
/*
选择排序的原理:每次在无序队列中“选择”出最小值,放到有序队列的最后,并从无序队列
中去除该值(具体实现略有区别)。
选择排序的代码如下:
*/
void selection_sort(int a[],int n){
int i,j;
int min;
for(i=0;i<n;++i)
{
min=i;
for(j=i+1;j<n;++j)
{
if(a[j]<a[min])
min=j;
}
if(min!=i)
swap(&a[min],&a[i]);
}
}
/*
插入排序的原理:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的
移动数据,空出一个适当的位置,把待插入的元素放到里面去。
插入排序的代码如下:
*/
void insertion_sort(int a[],int n){
int i,j;
for(i=1;i<n;++i)
{
int A=a[i];
j=i-1;
while(j>=0&&a[j]>A)
{
a[j+1]=a[j];
j--;
}
a[j+1]=A;
}
}
int main(int argc, char *argv[])
{
int a[]={5,6,7,1,2,3};
// bubble_sort(a , 6);
//selection_sort(a , 6);
insertion_sort(a, 6);
int i;
for(i=0;i<sizeof(a)/sizeof(int);++i)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。