C语言多个字符串排序

  • Post author:
  • Post category:其他


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;
}



版权声明:本文为weixin_42199699原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。