排序算法

    技术2025-01-31  18

    冒泡排序:

     

    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]);

                  }

               }

         }

    }

    最新回复(0)