常见排序算法

更新时间:

2017.10.20  冒泡,快速,简单选择

1.冒泡排序

void bubble_sort(int a[], int n)
{
    int i,j,tmp;
    int flag = 1;

    for (i=0; (i<n-1)&&(flag==1); i++)
    {
        flag = 0;
        for (j=n-1; j>i; j--)
        {
            if(a[j-1] > a[j])
            {
                tmp = a[j-1];
                a[j-1] = a[j];
                a[j] = tmp;
                flag = 1;
            }
        }
    }
}

2.快速排序(递归)

void quick_sort(int a[], int low, int high)
{
    int i = low;
    int j = high;
    int key = a[low];

    if (low >= high)
    {
        return;
    }

    else
    {
        while (i < j)
        {
            while ((i < j) && (a[j] >= key))
            {
                j--;
            }
            a[i] = a[j];
            while ((i < j) && (a[i] <= key))
            {
                i++;
            }
            a[j] = a[i];
        }
        a[i] = key;
        quick_sort(a, low, i-1);
        quick_sort(a, i+1, high);
    }
}

3.简单选择排序

void select_sort(int a[], int n)
{
    int i,j,tmp,min;

    for (i=0; i<n-1; i++)
    {
        min = i;
        for (j=n-1; j>i; j--)
        {
            if (a[j] < a[min])
            {
                min = j;
            }
        }
        if(min != i)
        {
            tmp = a[min];
            a[min] = a[i];
            a[i] = tmp;
        }
    }
}

  

 

 

posted on 2017-10-20 17:19  Lu_m_qi  阅读(93)  评论(0)    收藏  举报

导航