C語言 數組實現冒泡排序和選擇排序程序

冒泡排序:

冒泡排序的的優點是好理解,穩定,再就是空間復雜度低,不需要額外開辟數組元素的臨時保存控件,當然了,編寫起來也容易。

其算法很簡單,就是比較數組相鄰的兩個值,把大的像泡泡一樣“冒”到數組后面去,一共要執行N的平方除以2這么多次的比較和交換的操作(N為數組元素),其復雜度為Ο(n2),如圖:

266CD4AF-1468-4B13-96A7-ED25AAE9C6AA.png
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]);  
    }  

}

選擇排序:

自己能夠想得出來的排序法,思路很簡單,用打擂臺的方式,找出最大的一個元素,和末尾的元素交換,然后再從頭開始,查找第1 個到第N-1 個元素中最大的一個,和第N-1 個元素交換……其實差不多就是冒泡法的思想,但整個過程中需要移動的元素比冒泡法要少,因此性能是比冒泡法優秀的。看圖:

F1E23635-90D1-4029-B27D-8C62C3DC473E.png
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;  
}  
}  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容