21xrx.com
2025-03-21 13:31:20 Friday
文章检索 我的文章 写文章
如何在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语言、字符串、排序、字符计数排序法

  
  

评论区