21xrx.com
2024-12-23 03:02:43 Monday
登录
文章检索 我的文章 写文章
如何在C语言字符串中对字符进行排序
2023-06-16 13:13:31 深夜i     --     --
C语言 字符串 排序 冒泡排序法

在C语言中,字符串是由一系列字符组成的数组。在程序设计中,有时我们需要对字符串中的字符进行排序,以满足一些特定的需求。本文将介绍一些方法,帮助您在C语言中对字符串中的字符进行排序。

方法一:使用冒泡排序法

冒泡排序法是一种简单的排序算法,它可用于对C语言中的字符串进行排序。该算法通过反复循环数组,比较相邻的元素并交换它们,直到没有任何交换为止。代码如下:


#include

#include

int main()

{

  char str[100];

  int i, j, n;

  scanf("%s", str);

  

  n = strlen(str);

  for(i = 0; i < n - 1; i++)

  {

    for(j = i + 1; j < n; j++)

    {

      if(str[i] > str[j])

      {

        char temp = str[i];

        str[i] = str[j];

        str[j] = temp;

      }

    }

  }

  

  printf("排序后的字符串为:%s\n", str);

  

  return 0;

}

方法二:使用快速排序法

快速排序法是一种常用的排序算法,也可用于对C语言中的字符串进行排序。该算法通过选取一个元素作为“基准”,将数组分成两个部分,然后对这两个部分分别进行递归排序。代码如下:


#include

#include

void quicksort(char *str, int left, int right)

{

  if(left >= right)

    return;

  int i = left, j = right;

  char key = str[left];

  while(i < j)

  {

    while(i < j && str[j] >= key)

      j--;

    str[i] = str[j];

    while(i < j && str[i] <= key)

      i++;

    str[j] = str[i];

  }

  str[i] = key;

  quicksort(str, left, i - 1);

  quicksort(str, i + 1, right);

}

int main()

{

  char str[100];

  scanf("%s", str);

  int len = strlen(str);

  quicksort(str, 0, len - 1);

  printf("排序后的字符串为:%s\n", str);

  return 0;

}

关键词:C语言、字符串、排序、快速排序法

方法三:使用字符计数排序法

字符计数排序法是一种简单的排序算法,它可用于对C语言中的字符串进行排序。该算法通过统计字符串中每个字符出现的次数,然后重组字符串来排序。代码如下:


#include

#include

void countsort(char *str, int len)

{

  int freq[256] = {0};

  int i;

  char sorted[100] = {0};

  

  for(i = 0; i < len; i++)

  {

    freq[str[i]]++;

  }

  

  int k = 0;

  for(i = 0; i < 256; i++)

  {

    while(freq[i] > 0)

    {

      sorted[k++] = i;

      freq[i]--;

    }

  }

  

  strcpy(str, sorted);

}

int main()

{

  char str[100];

  scanf("%s", str);

  int len = strlen(str);

  countsort(str, len);

  printf("排序后的字符串为:%s\n", str);

  return 0;

}

关键词:C语言、字符串、排序、字符计数排序法

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复