#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]); }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题