排序的几个基本算法

 

 

1、顺序排序:数组内部做排序

第一个和第二个做比对,第一个和第三个多比对,第一个和第四个做比对,以此类推。

 

//顺序排序
void sort_xunxu(int * a,int n)
{// a 数组地址,n: 数组的长度
    int i, j;
    int tmp = NULL;

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


2、冒泡排序

顾名思义,就和冒泡泡一样,两个两个对比,谁比较大谁上去。

第一个和第二个比较,第二个和第三个比较,以此类推。

// 冒泡排序
void sort_maopao(int *a,int n)
{

    int i = 0, j = 0;
    int tmp = 0;

    for (i = 0; i < n - 1;i++)
    {
        for (j = 0; j < n - 1 - i;j++)
        {  // 升序
            // 两两对比
            if (a[j]>a[j+1])
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

 

 

3、选择排序

就是记录最大值(或者最小值),互换位置。

// 选择排序
void sort_xuanze(int *a,int n)
{
    int i, j;
    int min;
    int tmp;

    for (i = 0; i < n - 1;i++)
    {  // 选择最小值
        min = i;
        for (j = i + 1; j < n;j++)
        {   // 判定谁打,选择小的位置
            if ( a[min]>a[j])
            {// 选择最小值的位置
                min = j;
            }
            // 当最小值的位置如果不是自己的话,就换
            if (min != i)
            {
                tmp = a[min];
                a[min] = a[i];
                a[i] = tmp;
            }
        }
    }
}
posted @ 2016-02-27 16:18  qxj511  阅读(198)  评论(0编辑  收藏  举报