排序算法

来源:互联网 发布:刀补g41g42走整圆编程 编辑:程序博客网 时间:2024/05/16 17:32

冒泡排序:

 

void bubblesort(int *a,int n)

{

   bool changed;

   int i;

   do

   {

      changed=false;

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

      {

        if(a[i]>a[i+1])

         swap(&a[i],&a[i+1]);

      }

     --n;

   }while(changed);

}

 

 

 

 

快速排序:

 

void quicksort(int *a,int n)

{

    if(n<=1) return;

    if(n==2)

    {

        if(a[0]>a[1])

        { 

           swap(&a[0],&a[1]);

            return;

        }

    }

swap(&a[0],&a[n/2])

   int key=a[0];

   int *L=a+1;

   int *R=a+n-1;

   while(L<R)

   {

       while(L<R &&*L<key) ++L;

       while(a<R && *R>key) --R;

       if(L<R)

       swap(*L,*R);

    }

    if(*R<key)

     swap(*R,a[0]);

     quicksort(a,R-a);

     quicksort(R+1,n-1-(R-1));

}

 

 

选择排序:

 

void select(int *a,int n)

{

   for(int i=0;i<n-1;i++)

     {

         int min=i;

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

           {

              if(a[min]>a[j])

              {

                 min=j;

                 swap(a[min],a[i]);

              }

           }

     }

}

原创粉丝点击