C语言输入一个字符串,将字符串中所有字符按ASCII码升序排列后输出。若输入"edcba",输出"abcde"?

2024-11-25 12:21:41
推荐回答(1个)
回答1:

对字符串中所有字符按ASCII码升序排列,本质上就是对字符数组排序,你给的答案用的是冒泡排序,它的基本原理是每次检查相邻的两个数,如果不满足升序,交换相邻的两个数。
如果按照你说的把第五行改成i=strlen(t)-1,那么第6行的循环只会循环1次(j从0~i-1)
然而这样循环完成一次之后,只能保证最后一个元素归位,并不能保证所有元素从小到大,根据冒泡排序的原理,冒泡排序每次(至少)能把最后一个元素归位,所以至少需要归位strlen(t)-1次(归位了strlen(t)-1个字符,剩下那个字符的位置肯定是对的),所以第6行的循环至少执行strlen(t)-1次。
还有不懂可以问。