首页 > 试题广场 >

字符串内排序

[编程题]字符串内排序
  • 热度指数:16402 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。

输入描述:
测试数据有多组,输入字符串。


输出描述:
对于每组输入,输出处理后的结果。
示例1

输入

bacd

输出

abcd
#快速排序实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define max 201
int cmp(const void *a, const void *b) {
    return *(char*)a - *(char*)b;
}
int main() {
    char str[max];
    while (scanf("%s", str) != EOF) {
        qsort(str, strlen(str), sizeof(char), cmp);
        printf("%s\n", str);
    }
    return 0;
}
#插入排序实现
#include <stdio.h>
#include <string.h>
#define max 200
#define maxs 100
typedef struct{
    char s[max];
    int len;
} Str;
void sort(char s[],int k){
    char key = s[k-1];
    int j = k-2;        
    while (j >= 0 && s[j] > key) {
        s[j+1] = s[j];  
        j--;
    }
   
    s[j+1] = key;
}
int main() {
    Str s[maxs];
    int i=0;
    while (i < maxs && scanf("%s", s[i].s) != EOF) {
        s[i].len = strlen(s[i].s);
        for (int j = 2; j <= s[i].len; j++) {
            sort(s[i].s, j);
        }
        printf("%s\n", s[i].s);
        i++;
    }
    return 0;
}
发表于 2025-12-31 12:34:33 回复(0)
#include <stdio.h>
#include <string.h>
int main(){
    char str[201];
    scanf("%s",str);
    int n=strlen(str);
    for(int i=0;i<n-1;i++){
        for(int 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;
}
发表于 2025-03-06 22:37:46 回复(0)
#include <stdio.h>

int main() {
    char s[200] , a;
    int n = 0;
    while (scanf("%c\n", &a) != EOF) {
        s[n]=a;n++;
    }
    int i = 1;
    for (; i < n; i++) {
        for (int j = 0 ;j < n-i; j++) {
            if (s[j] > s[j + 1]) {
                a = s[j + 1];
                s[j + 1] = s[j];
                s[j] = a;
            }
        }
    }
    for (int j = 0; j < n; j++) {
        printf("%c", s[j]);
    }
    return 0;
}
发表于 2025-02-06 17:17:28 回复(0)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>

void kuaipai(char a[],int h,int r)
{
    char c = a[h];
    int f = h, e = r;
    while (h < r)
    {
        while (h<r&&a[r] >= c)
            r--;
        a[h] = a[r];
        while (h<r&&a[h] < c)
            h++;
        a[r] = a[h];
    }
    a[h] = c;
    if (f < e)
    {
        kuaipai(a, f, h - 1);
        kuaipai(a, h + 1, e);
    }
}

int main()
{
    char s[200];
    while (scanf("%s", s) != EOF)
    {
        int n = strlen(s);
        kuaipai(s, 0, n-1);
        printf("%s\n", s);
    }
}
编辑于 2024-02-04 11:14:37 回复(0)
#include <stdio.h>
#include <string.h>
typedef int Position;
// 快排
Position partion(char *str, int low, int high)
{
  char pivot = str[low];
  while (low < high)
  {
    while (low < high && str[high] >= pivot)
      high--;
    str[low] = str[high];
    while (low < high && str[low] <= pivot)
      low++;
    str[high] = str[low];
  }
  str[low] = pivot;
  return low;
}
void QuickSort(char *str, int low, int high)
{
  if (low < high)
  {
    Position pivotProps = partion(str, low, high);
    QuickSort(str, low, pivotProps - 1);
    QuickSort(str, pivotProps + 1, high);
  }
}
int main()
{
  char str[200];
  while (scanf("%s", str) != EOF)
  { // 注意 while 处理多个 case
    QuickSort(str, 0, strlen(str) - 1);
    printf("%s", str);
  }
  return 0;
}

发表于 2022-03-21 19:41:39 回复(0)