排序算法

冒泡排序:

void bublle_sort(int s[], int n)
{
    int i, j, temp;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n -i; j++)
        {
            if (s[j+1] < s[j])
            {
                temp = s[j];
                s[j] = s[j+1];
                s[j+1] = temp;
            }
        }
    }
}

插入排序:

void insert_sort(int s[], int n)
{
    int i,j,temp;
    for (i = 1; i <= n; i++)
    {
        temp = s[i];
        for (j = i-1; j >= 0 && s[j] > temp; j--)
        {
            s[j+1] = s[j];
        }

        s[j+1] = temp;
    }

}

选择排序:

void select_sort(int s[], int n)
{
    int i,j,min,temp;
    for (i = 0; i < n; i++)
    {
        min = i;
        for (j = i+1; j <= n; j++)
        {
            if (s[j] < s[min])
            {
                min = j;
            }
        }

        if (min != i)
        {
            temp = s[min];
            s[min] = s[i];
            s[i] = temp;
        }
    }
}

 

快速排序:

int partition(int s[], int le, int ri)
{
    int i = le, j = ri;
    int temp = s[le];
    while (i<j)
    {
        while(j > i && s[j] >= temp)
            j--;
        s[i] = s[j];

        while(i < j && s[i] <= temp)
            i++;
        s[j] = s[i];
    }
    s[i] = temp;

    return i;
}

void quick_sort(int s[], int le, int ri)
{
    if (le < ri)
    {
        int q = partition(s,le,ri);
        quick_sort(s,le,q-1);
        quick_sort(s,q+1,ri);
    }
}

 

posted @ 2014-03-20 10:31  ↙公子ゞ小白  阅读(105)  评论(0)    收藏  举报