歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言冒泡排序

C語言冒泡排序

日期:2017/3/1 10:18:43   编辑:Linux編程

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