插入排序(指针)

来源:互联网 发布:安卓版全球网络电视apk 编辑:程序博客网 时间:2024/05/29 20:00
/*
#include<stdio.h>//实参和形参均为数组名
#define N 10
int input(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    return 0;
}
int output(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%5d",a[i]);
    printf("\n");
    return 0;
}
int sort(int a[],int n)
{
    int i,j;
    int temp;
    for(i=1;i<n;i++)
    {
        if(a[i]<a[i-1])
        {
            temp=a[i];
            j=i-1;
            while(a[j]>temp && j>=0)
            {
                a[j+1]=a[j];
                j--;
            }
            a[j+1]=temp;
        }


    }
    return 0;
}
int main()
{
    int a[N];
    printf("输入%d个整数:\n",N);
    input(a,N);
    printf("排序前数组元素的值:\n");
    output(a,N);
    sort(a,N);
    printf("排序后数组元素的值:\n");
    output(a,N);//值已经改变了
    return 0;
}


*/
/*

#include<stdio.h>//实参是数组名,形参是指针变量 for的思路
#define N 10
int input(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        scanf("%d",pr);
    return 0;
}
int output(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        printf("%5d",*pr);
    printf("\n");
    return 0;
}
int sort(int *pr,int n)
{
    int *p,*q;
    int *pr_end=pr+n;
    int temp;
    for(p=pr+1;p<pr_end;p++)
    {
        if(*p<*(p-1))
        {
            temp=*p;
            *p=*(p-1);
            for(q=p-2;*q>temp && q>=pr;q--)//for的思路
            {
                *(q+1)=*q;
            }
            *(q+1)=temp;
        }


    }
    return 0;
}

int main()
{
    int a[N];
    printf("输入%d个整数:\n",N);
    input(a,N);
    printf("排序前数组元素的值:\n");
    output(a,N);
    sort(a,N);
    printf("排序后数组元素的值:\n");
    output(a,N);//值已经改变了
    return 0;
}*/

#include<stdio.h>//实参是数组名,形参是指针变量
#define N 10
int input(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        scanf("%d",pr);
    return 0;
}
int output(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        printf("%5d",*pr);
    printf("\n");
    return 0;
}
int sort(int *pr,int n)
{
    int *p,*q;
    int temp;
    int *pr_end=pr+n;
    for(p=pr+1;p<pr_end;p++)
    {
        if(*p<*(p-1))
        {
            temp=*p;
            q=p-1;
            while(*q>temp && q>=pr)
            {
                *(q+1)=*q;
                q--;
            }
            *(q+1)=temp;
        }


    }
    return 0;
}
int main()
{
    int a[N];
    printf("输入%d个整数:\n",N);
    input(a,N);
    printf("排序前数组元素的值:\n");
    output(a,N);
    sort(a,N);
    printf("排序后数组元素的值:\n");
    output(a,N);//值已经改变了
    return 0;
}

/*
#include<stdio.h>//实参是指针变量,形参均是数组名
#define N 10
int input(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    return 0;
}
int output(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%5d",a[i]);
    printf("\n");
    return 0;
}
int sort(int a[],int n)
{
    int i,j;
    int temp;
    for(i=1;i<n;i++)
    {
        if(a[i]<a[i-1])
        {
            temp=a[i];
            j=i-1;
            while(a[j]>temp && j>=0)
            {
                a[j+1]=a[j];
                j--;
            }
            a[j+1]=temp;
        }


    }
    return 0;
}
int main()
{
    int a[N];
    int *p;
    p=a;
    printf("输入%d个整数:\n",N);
    input(p,N);
    printf("排序前数组元素的值:\n");
    output(p,N);
    sort(p,N);
    printf("排序后数组元素的值:\n");
    output(p,N);//值已经改变了
    return 0;
}
*/
/*
#include<stdio.h>//实参是数组名,形参是数组变量
#define N 10
int input(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        scanf("%d",pr);
    return 0;
}
int output(int *pr,int n)
{
    int *pr_end=pr+n;
    for(;pr<pr_end;pr++)
        printf("%5d",*pr);
    printf("\n");
    return 0;
}
int sort(int *pr,int n)
{
    int *p,*q;
    int temp;
    int *pr_end=pr+n;
    for(p=pr+1;p<pr_end;p++)
    {
        if(*p<*(p-1))
        {
            temp=*p;
            q=p-1;
            while(*q>temp && q>=pr)
            {
                *(q+1)=*q;
                q--;
            }
            *(q+1)=temp;
        }


    }
    return 0;
}
int main()
{
    int a[N];
    int *p;
    p=a;
    printf("输入%d个整数:\n",N);
    input(p,N);
    printf("排序前数组元素的值:\n");
    output(p,N);
    sort(p,N);
    printf("排序后数组元素的值:\n");
    output(p,N);//值已经改变了
    return 0;
}
*/


原创粉丝点击