歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言冒泡排序

C語言冒泡排序:

定義:從第一個數開始,和其後面的第一個數比較,若大之,則交換,否則,和第三個數比較,直到第一個數和所有的數都比較完,完成第一趟排序,並選出了最大的一個數,排在了最後面,然後在將第一趟排序好的數組的第一個數和後面的數依次比較,不必和最後一個數比較了,因為最後一個數是最大數了。如此,第三趟排序不必和最後兩個數比較了。當多有的數都比較過後,排序完成。

代碼如下:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 int a[]={4,5,2,6,9,7,5,74,56,89,132};

Bubble(a,11);

 int i=0;
 for(;i<11;i++)
 {
  printf("%d:%d\n",i,a[i]);

 }
 return 0;
}

void Bubble(int a[],int len)
{
 int length=len;
 int i=0;
 int j=0;
 for(;i<len;i++)
 {

  for(;j<length;j++)
  {

   if(a[j]>a[j+1])
   {
    int temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;

   }

  }
  length--;
  j=0;
 }


}

 

快速排序:

定義:將要排序的數組分成兩塊,其中一塊的每一個數都小於另一塊中的每一個數。

方法:1 取第一個數作為標准

           2 從數組的最後面開始,將最後一個數和標准(第一個數)對比,大於標准,取倒數第二個數和標准對比,一次類推,若小於標准將標准和該數交換。

           3 從前面第二個數開始,與標准比較,大於標准,交換,否則一直向下找。

           4 當從後面的數和從前面的數相等的時候,第一趟排序完成。

           5 利用遞歸,完成剩下的排序。

 

代碼:

void quick(int a[],int orign,int length)
{

    if(orign>=length)
    {
        return;
    }
    int temp=a[orign];
    int lengthnum=length;
    int i=orign;
    while(i!=lengthnum)
    {
        while(a[i]<a[lengthnum]&&i<lengthnum)
        {
            lengthnum--;
        }
        if(i<lengthnum)
        {
            int temp=a[i];
            a[i]=a[lengthnum];
            a[lengthnum]=temp;
            i++;
        }

        while(a[lengthnum]>a[i]&&i<lengthnum)
        {
            i++;
        }
        if(i<lengthnum)
        {
            int temp=a[i];
            a[i]=a[lengthnum];
            a[lengthnum]=temp;
            lengthnum--;
        }

    }
    quick(a,0,i-1);
    quick(a,lengthnum+1,length);
}

Copyright © Linux教程網 All Rights Reserved