方法一:冒泡排序


#include <stdio.h>

int main()
{
    char str[1000] = {0};
    scanf("%s", str);
    int len = strlen(str);
    char temp = '0';
    for(int i = 0; i < len; i++)
    {
        for(int j = i+1; j < len; j++)
        {
            if(str[i]-'0' > str[j]-'0')
            {
                temp = str[i];
                str[i] = str[j];
                str[j] = temp;
            }
        }
    }
    printf("%s\n", str);
    return 0;
}

方法二:快速排序

#include <stdio.h>

/*
函数功能:快速排序
array:要排序的数组
beg:数组头
end:数组尾
*/
int quick_sort(char *array, int beg, int end)
{
    int flag = 0;    //前面位置为空
    int x = beg;
    int y = end;
    if(beg > end)
    {
        return -1;    //嵌套循环退出条件
    }
    int base = array[beg];    //选取基准值
    while(x < y)
    {
        if(flag == 0)
        {
            /* 从序列后面遍历, 比基准值小的数放到前面 */
            if(array[y] >= base)
            {
                y--;
                continue;
            }
            array[x] = array[y];
            x++;
            flag = 1;
        }
        else
        {
            /* 从序列前面遍历, 比基准值大的数放到后面 */
            if(array[x] <= base)
            {
                x++;
                continue;
            }
            array[y] = array[x];
            y--;
            flag = 0;
        }
    }
    array[x] = base;    //把基准值放到x的位置上
    quick_sort(array, beg, x-1);
    quick_sort(array, x+1, end);
    return 0;
}

int main()
{
    char str[1000] = {0};
    scanf("%s", str);
    int len = strlen(str);
    
    quick_sort(str, 0, len-1);

    printf("%s\n", str);
    return 0;
}