字符串排序(比较字符串首字符大小进行排序)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


//字符串排序 根据字符串首字符 按照a-z的顺序排序
void bubble(char ** arr,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
//对比两个字符串的首字母
if (**(arr+j) > **(arr+j+1))//比较首字母大小
{
char * temp = *arr;//交换地址
*(arr+j) = *(arr+j+1);
*(arr+j+1) = * temp;
}//可以想象成一级指针的形式便于理解**arr指的是首字符的值
//*arr就是相当于存储首字符值的地址
/*
if (arr[j][0] > arr[j + 1][0])
{
char * temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
*/
//也可以这样写,这是比较首字符,再进行交换值
}
}
}
int main()
{
char * arr[] = { "ctudent", "bree", "eew", "aee" };
//char * 类型数组对应bubble函数应为二级指针
//char 类型数组对应bubble函数应为一级指针
//用*arr[0][0]可以找到对应的字符‘s’
bubble(arr, 4);
for (int i = 0; i < 4; i++)
{
printf("%s\n", arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}

注意:不能把所有的二级指针都当作二维数组来操作,可能会出现错误

posted on 2019-11-21 20:35  不冒泡的苏打水  阅读(2022)  评论(0编辑  收藏  举报

导航