C语言多个字符串排序

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 18:02   11   0

C语言中,多个字符串排序方法有两种

1,字符二维数组排序

void sort1(char (*arr)[20]){
 int i,j;
 char *temp;
 //冒泡排序 
 for(i=0;i<4;i++){
  for(j=0;j<4-i;j++){
   if(strcmp(arr[j],arr[j+1])>0){
    strcpy(temp,arr[j+1]);
    strcpy(arr[j+1],arr[j]);
    strcpy(arr[j],temp);
   }
  }
 }
}

#include <stdio.h>
#include <string.h>
int main(){
    //二维数组排序 
    int i;
    char arr[5][20];
    for(i=0;i<5;i++){
     scanf("%s",arr[i]);
    } 
    sort1(arr);
    for(i=0;i<5;i++){
     printf("%s\n",arr[i]);  
    }
    return 0;
}


2,指针数组排序

void sort2(char **arr){
 int i,j,k;
 char *temp;
 //选择排序
 for(i=0;i<4;i++){
  k=i;
  for(j=i+1;j<5;j++){
   if(strcmp(arr[k],arr[j])>0){
    k=j;
   }
  }
  if(k!=i){
   temp=arr[k];
   arr[k]=arr[i];
   arr[i]=temp;
  }
 } 
}

#include <stdio.h>
#include <string.h>
int main(){
    int i;
    //指针数组排序
    char *arr[5];
    for(i=0;i<5;i++){
        //为指针申请内存空间,也可以使用二维数组代替
        arr[i]=(char *)malloc(20*sizeof(char));
        scanf("%s",arr[i]);
    }
    sort2(arr);
    for(i=0;i<5;i++){
        printf("%s\n",arr[i]);  
    }
    return 0;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP