冒泡排序:
冒泡排序的的優(yōu)點(diǎn)是好理解题造,穩(wěn)定,再就是空間復(fù)雜度低猾瘸,不需要額外開(kāi)辟數(shù)組元素的臨時(shí)保存控件界赔,當(dāng)然了,編寫(xiě)起來(lái)也容易牵触。
其算法很簡(jiǎn)單淮悼,就是比較數(shù)組相鄰的兩個(gè)值,把大的像泡泡一樣“冒”到數(shù)組后面去揽思,一共要執(zhí)行N的平方除以2這么多次的比較和交換的操作(N為數(shù)組元素)袜腥,其復(fù)雜度為Ο(n2),如圖:
main()
{
int a[5];
int i;
int j;
int k;
int temp;
for(k=0;k<5;k++)
scanf("%d",&a[k]);
for (i=0;i<5;i++)
for (j=0;j<5-i;j++)
{
if (a[j]>a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
for (i=0;i<5;i++)
{
printf("%d ",a[i]);
}
}
選擇排序:
自己能夠想得出來(lái)的排序法钉汗,思路很簡(jiǎn)單羹令,用打擂臺(tái)的方式,找出最大的一個(gè)元素损痰,和末尾的元素交換福侈,然后再?gòu)念^開(kāi)始,查找第1 個(gè)到第N-1 個(gè)元素中最大的一個(gè)卢未,和第N-1 個(gè)元素交換……其實(shí)差不多就是冒泡法的思想肪凛,但整個(gè)過(guò)程中需要移動(dòng)的元素比冒泡法要少,因此性能是比冒泡法優(yōu)秀的辽社∥扒剑看圖:
void select_sort(int a[],int len)
{
int i,j,x,l;
for(i=0;i<len;i++)
{
x=a[i];
l=i;
for(j=i;j<len;j++)
{
if(a[j]<x)
{
x=a[j];
l=j;
}
}
a[l]=a[i];
a[i]=x;
}
}