首页 > 试题广场 >

输入若干个字符串,通过指针数组采用直接插入排序方法将这些字符

[问答题]
输入若干个字符串,通过指针数组采用直接插入排序方法将这些字符串按照从小到大的次序排序后输出。
推荐
使用一个指针数组p指向各个字符串,采用直接插入排序方法对其排序。对应的程序如下:
#include <stdio.h>
#include <string.h>
#define Max 10
void main()
{
    char str[Max] [20];
    char * p[Max], * tmp;
    int i,j,n;
    printf("n:");
    scanf("%d",&n);                                      /*n<=10*/
    for (i=0;i<n;i++ )
    {    p[i]=str[i];
        printf("String%d:",i+1);
        scanf("%d",p[i]);
    }
    for (i=1;i<n;i++ )                                 /*每趟排序p[i]*/
        if (strcmp(p[i],p[i-1])<0)                     /*若p[i]大于有序区中所有元素,则位置不变*/
        {    tmp=p[i];j=i-1;                /*将p[i]保存在临时变量tmp中*/
            do                     /*在有序区 p[0..i-1]中查找p[i[]的插入位置*/
            {    p[j+1]=p[j];                   /*将有序区中大于p[i]的元素后移*/
            } while (j>=0 && strcmp(tmp,p[j])<0);    /*当p[i]≥p[j]时终止*/
            p[j+1]=tmp;                         /*p[i]插入到j+1位置上*/
        }
    printf("排序后:\n");
    for (i=0;i<n;i++ )
        printf("%s\n",p[i]);
}

发表于 2018-05-07 10:58:22 回复(0)