各种常见的排序方法-创新互联

我目前学到的常见的有三种排序方法 插入,选择和冒泡排序  。

创新互联公司科技有限公司专业互联网基础服务商,为您提供绵阳机房托管高防服务器,成都IDC机房托管,成都主机托管等互联网服务。

这里面我觉得插入排序是最难理解的

这次我是结合指针来操作数组 

这个是插入排序 

#includevoid insert(int *p, int n)

{

    int i, j, temp;

    for (i = 1; i< n; i++)

    {

        temp = *(p + i);

        for (j = i - 1; j >= 0 && temp< *(p + j); j--)//将大于temp的元素循环后移

            *(p + j + 1) = *(p + j);

        *(p + j + 1) = temp;

    }

}

int main()

{

    int a[10] = {78, 34, 54, 23, 780, 64, 45, 75, 34, 66};

    insert(a, 10);

    for (int i = 0; i< 10; i++)

        printf("%d ",a[i]);

    printf("\n");

    return 0;

}

这是选择排序

#includevoid selectsort(int *p, int n)
{
    int i, j, *pt, temp;
    for (i = 0; i< n; i++)
    {
        pt = p + i;
        for (j = i + 1; j< n; j++)
        {
            if (*(p + j)< *pt)
                pt = p + j;
        }
        temp = *pt, *pt = *(p + i), *(p + i) = temp;
    }
}
int main()
{
    int a[10] = {78, 34, 54, 23, 780, 64, 45, 75, 34, 66};
    selectsort(a, 10);
    for (int i = 0; i< 10; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

这是冒泡排序

#includevoid bubblesort(int *p, int n)
{
    int i, j, temp;
    for (int i = n - 1; i >= 0; i--)
    {
        for (j = 0; j< i; j++)
        {
            if (*(p + j) >*(p + j + 1))
            {
                temp = *(p + j + 1);
                *(p + j + 1) = *(p + j);
                *(p + j) = temp;
            }
        }
    }
}

int main()
{
    int a[10] = {78, 34, 54, 23, 780, 64, 45, 75, 34, 66};
    bubblesort(a, 10);
    for (int i = 0; i< 10; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:各种常见的排序方法-创新互联
本文路径:http://ybzwz.com/article/dpgogj.html