選擇排序和氣泡排序

aFakeProgramer發表於2018-08-01

 

void select_sort(int a[],int n)//選擇排序
{
    //選擇排序,每次選擇最小的放在第一個位置,然後下次從第二個位置開始
    for(i=0;i<n-1;++i)
    {
        j=i;//給下標放在一開始的位置
        for(k=i+1;k<n;++k)
            if(a[k]<a[j])
                j=k;//找到最小值數的下標
            if(j!=i)
            {//把最小值所在下標的數,與每次一開始的第一個數做交換
                int temp =a[j];
                a[j]=a[i];
                a[i]=temp;
            }
    }
}
時間複雜度n(n-1)/2
語句的頻度

氣泡排序
void bubble_sort(int a[],int n)
{
    for(i=0,change=TRUE;i<n && change;++i)
    {
        change =FALSE;
        for(j=i;j<n;++j)
        {
            if(a[i]>a[j])
            {
                int tem=a[i];
                a[i]=a[j];
                a[j]=t;
                change=TRUE;//如果哪次沒有發生交換,說明演算法結束了
            }
        }
    }
}
時間複雜度:O(n的2次方)

 

矩陣乘法操作
for(i=1;i<=n;++i)
    for(j=1;j<=n;++j)
    {
        c[i,j]=0;
        for(k=1;k<=n;++k)
            c[i,j]+=a[i,k]*b[k,j];
    }

基本操作:乘法
時間複雜度:O(n的3次方)

相關文章