(C语言) 写一个函数,用 "起泡法" 对输入的十个字符按照由小到大的顺序排序

写一个函数, 用"起泡法" 对输入的十个字符按照由小到大的顺序排序

需要注意的是, 这里对字符比大小和数字比大小无异, 因为字符在计算机中用ASCII码形是存储的(C99把字符型数据作为整数类型的一种)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
void fun(char str[]) {
	int n = strlen(str);
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < n - 1 - i; ++j) {
			if (str[j] > str[j + 1]) { //从大到小只需换成<号
				str[j] = str[j] ^ str[j + 1];
				str[j + 1] = str[j] ^ str[j + 1];
				str[j] = str[j] ^ str[j + 1];
			}
		}
	}
}

void main() {
	char str[1024];
	printf("请输入十个字符\n");
	fgets(str, N, stdin);
	fun(str);
	printf("排序后的字符为:%s\n", str);
	system("pause");
}

在这里插入图片描述

  • 15
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是用Python语言编函数,实现冒泡排序法对输入10个字符由小到大顺序排列: def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr # 测试 arr = ['c', 'a', 'b', 'f', 'e', 'd', 'i', 'h', 'g', 'j'] print(bubble_sort(arr)) # 输出:['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] ### 回答2: 冒泡排序法是一种简单易懂的排序方法,对于一些小的数据集也能够得到不错的排序结果。以下是使用Python编一个冒泡排序函数,可以对输入10个字符由小到大排序。 ```python def bubble_sort(items): """ 冒泡排序函数 :param items: 待排序的数据(字母) :return: 排序后的数据 """ n = len(items) for i in range(n): # 从第一个元素开始比较到倒数第二个元素 for j in range(n - i - 1): # 比较相邻两元素,如果前一个元素比后一个元素大,则交换位置 if items[j] > items[j + 1]: items[j], items[j + 1] = items[j + 1], items[j] return items # 测试代码 items = input("请输入10个字符(用空格隔开):").split() result = bubble_sort(items) print("排序结果:", result) ``` 在上述代码中,我们先定义了一个`bubble_sort`函数,接受一个列表类型的参数`items`,其中包含了10个字符。接下来,我们使用Python中的双层循环结构,每次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换位置。这样一次排序结束后,最大的元素就排到了最后面。随着循环的进行,每次都会排好一个元素,因此我们需要在外层循环时依次减少比较的元素个数(即`n-i-1`)。当外层循环结束后,这个列表中的元素就按升序排列。最后,我们使用`input`函数从标准输入中读取10个字符,通过`split`方法将其转换成列表形式,并调用`bubble_sort`函数进行排序,将结果打印出来。 需要注意的是,本函数只适用于只包含单个字符字符串列表,如果列表中包含了多个字符字符串,应该先对其进行分割再进行排序。此外,由于输入数据的不确定性,用户输入可能不符合预期,因此有必要添加一些数值检查以及异常处理代码,以保证程序的稳定性和健壮性。 ### 回答3: 冒泡排序是一种基础的排序算法,它通过不断交换相邻的元素来使得最大的元素慢慢“浮”到数组的最后面,因此称为冒泡排序。下面我们来一个冒泡排序函数,将输入10个字符由小到大顺序排列。 首先,我们需要先定义一个函数bubbleSort(),它的输入参数为一个字符数组char a[10],表示待排序10个字符函数中,我们可以使用两个嵌套的for循环来实现冒泡排序: void bubbleSort(char a[10]) { for (int i = 0; i < 9; i++) { // 外层循环从第一个元素到第九个元素 for (int j = 0; j < 9 - i; j++) { // 内层循环从第一个元素到第(i+1)个元素 // 如果相邻的两个元素逆序,则交换它们的位置,使得大的元素“浮”到后面 if (a[j] > a[j + 1]) { char tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } } 上面的代码中,外层循环控制排序的次数,每一次排序都会将一个最大的元素放到数组的最后面。内层循环负责比较相邻的两个元素,如果它们的顺序与要求的排序顺序不一致,就进行交换。 最后,我们可以在主函数中调用bubbleSort()来对输入字符进行排序。例如: int main() { char a[10]; cout << "请输入10个字符:" << endl; for (int i = 0; i < 10; i++) { cin >> a[i]; } bubbleSort(a); cout << "排序后的字符为:" << endl; for (int i = 0; i < 10; i++) { cout << a[i] << " "; } cout << endl; return 0; } 输入任意10个字符,运行程序后就可以输出排序后的字符了。冒泡排序虽然简单,但它为其他更高级的排序算法的实现提供了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值