要求:
- 根据字符串首字符 按照a-z的顺序排序
student tree new bee => bee new student tree - 使用三种方法比对两个字符串的首字母:
1数组判断
2指针判断
3混合判断
公共部分:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char* arr[] = { "cshdf", "ehsdhf", "bjhdjfhd","abee" };
bubble(arr, 4);
for (int i = 0; i < 4; i++)
{
printf("%s\n", arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
函数部分
数组判断:
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][0] > arr[j+1][0])
{
char * temp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
指针判断:
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+j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
混合判断:
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[j];
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
代码分析:
首先要明白如何进行字符串比较?无非就是比较字符串首字母的ASCII值的大小,那我们就很容易想到所学的整形数组的冒泡排序算法,流程就是 :字符=>ASCLL=>冒泡
数组判断:
char* arr[] = { "cshdf", "ehsdhf", "bjhdjfhd","abee" };
可以看成是一个二维数组 例如:arr[0][0]=c;
指针判断:
混合判断: