您的位置:首页 > 其它

简单排序(冒泡,选择,交换,插入)

2009-11-19 23:42 197 查看
冒泡排序:最简单的排序方式,也是最慢的。

#include "stdio.h"

void sort(int s[],int n)

{  int i;

   int j;

   int temp;

    for(i=1;i<n;i++)

    {

     for(j=n-1;j>=i;j--)

     {

       if(s[j]<s[j-1])

       {

         temp=s[j-1];

         s[j-1]=s[j];

         s[j]=temp;

       }

     }

    }

}

void main()

{

int i;

int arry[]={9,6,7,8,3,4};

sort(arry,6);

for(i=0;i<6;i++)

  {

  printf("%d ",arry[i]);

  }

  getch();

}
交换排序:每次用当前的元素一一的同其后的元素比较并交换。

#include "stdio.h"

void sort(int s[],int n)

{

 int i,j,temp;

 for(i=0;i<n;i++)

 {

    for(j=i+1;j<n;j++)

    {   if(s[j]<s[i])

       {

            temp=s[j];

            s[j]=s[i];

            s[i]=temp;

       }

    }

 }

}

void main()

{

int i;

int arry[]={9,6,7,8,3,4};

sort(arry,6);

for(i=0;i<6;i++)

  {

  printf("%d ",arry[i]);

  }

  getch();

}
选择排序:从数据中选择最小的同第一个值交换,再从剩下的数据中选择最小的同第二个交换,依次进行下去。

#include "stdio.h"

void sort(int s[],int n)

{

 int i,j,temp;

 int a;

 for(i=0;i<n;i++)

 {

   temp=s[i];

   a=i;

   for(j=i+1;j<n;j++)

   {

     if(s[j]<temp)

     {

       temp=s[j];

       a=j;

     }

   }

   s[a]=s[i];

   s[i]=temp;

 }

}

void main()

{

int i;

int arry[]={9,6,7,8,3,4};

sort(arry,6);

for(i=0;i<6;i++)

  {

  printf("%d ",arry[i]);

  }

  getch();

}

插入排序:基本原理就是抽出牌,在前面的牌中找出相应的位置插入,然后继续下一张。

#include "stdio.h"

void sort(int s[],int n)

{

   int temp;

   int i;

   int a ;

   for(i=1;i<n;i++)

   {

     temp=s[i];

     a=i-1;

     while((a>=0)&&(temp<s[a]))

     {

       s[a+1]=s[a];

       a--;

     }

     s[a+1]=temp;

   }

}

void main()

{

int i;

int arry[]={9,6,7,8,3,4};

sort(arry,6);

for(i=0;i<6;i++)

  {

  printf("%d ",arry[i]);

  }

  getch();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini