2、编写程序,使用列表保存键盘输人的一组数据,对给列表数据使用冒泡算法进行升序排序(要求使用循环嵌套实现,不使用排序函数、方法)。 分别输出排序前和排序后的列表内容。
时间: 2024-09-19 16:04:33 浏览: 70
在Python中,我们可以创建一个函数来实现冒泡排序算法,然后通过用户输入获取数据并进行排序。以下是代码示例:
```python
def bubble_sort(lst):
n = len(lst)
# 遍历所有数组元素
for i in range(n):
# 每轮遍历都将最大值"浮"到列表末尾
for j in range(0, n-i-1):
# 如果当前元素大于下一个元素,交换它们的位置
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
return lst
# 获取用户输入的数据,假设用户会输入一串逗号分隔的整数
unsorted_list = input("请输入一组数据,用逗号分隔:").split(',')
unsorted_list = [int(num) for num in unsorted_list]
# 对数据进行排序
sorted_list = bubble_sort(unsorted_list)
# 输出排序前的列表
print("排序前的列表:", unsorted_list)
# 输出排序后的列表
print("排序后的列表:", sorted_list)
相关问题
编写程序,使用列表保存键盘输入的一组数据,对给列表数据使用冒泡算法进行升序排序(要求使用循环嵌套实现,不使用排序函数、方法)。分别输出排序前和排序后的列表内容。
在Python中,你可以通过以下代码实现冒泡排序算法来对输入的数据进行升序排序:
```python
def bubble_sort(lst):
n = len(lst)
for i in range(n): # 外层循环控制轮数
for j in range(0, n-i-1): # 内层循环从头遍历到未排序部分的末尾
if lst[j] > lst[j+1]: # 如果当前元素大于下一个元素,交换它们的位置
lst[j], lst[j+1] = lst[j+1], lst[j]
return lst
# 获取用户输入
input_data = [int(i) for i in input("请输入一组数据,以逗号分隔:").split(",")]
# 排序前的数据
unsorted_list = copy.deepcopy(input_data)
print("排序前的列表:", unsorted_list)
# 对数据进行排序
sorted_list = bubble_sort(input_data)
print("排序后的列表:", sorted_list)
#
编写一个使用字符型指针数组对学生姓名字符串进行排序的程序。 写一个程序,把键盘输入的一组学生的姓名字符串存入一个字符型指针数组中,然后选择一种排序方法对其进行升序排序。要求字符型指针数组中的每个指针指向的空间都要动态申请。 提示:可以先用一个字符型数组过渡,接受键盘输入的字符串,再根据字符串的长度动态申请空间,并让字符指针数组的指针指向它,最后再把字符数组中的字符串复制到指针所指向的空间。
下面是一个使用字符型指针数组对学生姓名字符串进行排序的程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sortNames(char** names, int count) {
int i, j;
char* temp;
for (i = 0; i < count - 1; i++) {
for (j = 0; j < count - i - 1; j++) {
if (strcmp(names[j], names[j + 1]) > 0) {
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
}
}
}
}
int main() {
int count, i;
char tempName[100];
char** names;
printf("请输入学生数量:");
scanf("%d", &count);
names = (char**)malloc(count * sizeof(char*));
for (i = 0; i < count; i++) {
printf("请输入学生姓名:");
scanf("%s", tempName);
names[i] = (char*)malloc((strlen(tempName) + 1) * sizeof(char));
strcpy(names[i], tempName);
}
sortNames(names, count);
printf("排序后的学生姓名:\n");
for (i = 0; i < count; i++) {
printf("%s\n", names[i]);
free(names[i]);
}
free(names);
return 0;
}
```
在这个程序中,首先通过键盘输入学生的数量。然后使用`malloc`函数动态申请一个字符型指针数组`names`的内存空间。接下来,使用一个循环,依次输入学生的姓名,并将其存储在一个临时字符数组`tempName`中。然后,为每个学生的姓名动态申请内存空间,并将指针保存在`names`数组中。排序函数`sortNames`使用冒泡排序算法对学生姓名进行升序排序。最后,打印排序后的学生姓名,并释放动态申请的内存空间。
请注意,这只是一个示例程序,实际应用中可能需要进行错误处理和边界情况的检查。
阅读全文
相关推荐















