题解 | #图片整理#
图片整理
http://www.nowcoder.com/practice/2de4127fda5e46858aa85d254af43941
方法一:冒泡排序
#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;
}