C语言一串数字冒泡排序
时间: 2023-10-14 09:26:00 浏览: 28
可以回答该问题。冒泡排序的原理是比较相邻的元素,若顺序不对就交换它们,一轮比较后最大的元素会沉到最底下。以下是C语言实现冒泡排序的一段代码:
```c
#include <stdio.h>
int main() {
int num[] = {5, 2, 8, 1, 3};
int temp;
int i, j;
int len = sizeof(num) / sizeof(num[0]);
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (num[j] > num[j + 1]) {
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
for (i = 0; i < len; i++) {
printf("%d ", num[i]);
}
return 0;
}
```
该代码以数组 {5, 2, 8, 1, 3} 为例,将其进行冒泡排序后输出结果为 1 2 3 5 8。
相关问题
c语言字符串的冒泡排序
C语言字符串的冒泡排序可以通过比较字符串的ASCII码值来实现。具体步骤如下:
1.定义一个字符串数组,用于存储待排序的字符串。
2.使用嵌套循环,外层循环控制比较的轮数,内层循环控制每轮比较的次数。
3.在内层循环中,比较相邻两个字符串的ASCII码值,如果前一个字符串的值大于后一个字符串的值,则交换两个字符串的位置。
4.重复执行步骤3,直到一轮比较结束。
5.重复执行步骤2和步骤3,直到所有的轮数都执行完毕。
6.输出扫描完第K遍后的中间结果序列。
下面是C语言字符串冒泡排序的代码实现:
```c
#include <stdio.h>
#include <string.h>
void bubble_sort(char str[][100], int n, int k)
{
int i, j, l;
char temp[100];
for (i = 0; i < k; i++) //控制比较的轮数
{
for (j = 0; j < n - i - 1; j++) //控制每轮比较的次数
{
if (strcmp(str[j], str[j + 1]) > 0) //比较相邻两个字符串的ASCII码值
{
strcpy(temp, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j + 1], temp); //交换两个字符串的位置
}
}
printf("第%d遍排序结果:\n", i + 1);
for (l = 0; l < n; l++)
{
printf("%s ", str[l]); //输出每轮排序后的结果
}
printf("\n");
}
}
int main()
{
int n, k;
char str[100][100];
printf("请输入字符串的个数和扫描的轮数:\n");
scanf("%d%d", &n, &k);
printf("请输入%d个字符串:\n", n);
int i;
for (i = 0; i < n; i++)
{
scanf("%s", str[i]);
}
bubble_sort(str, n, k);
return 0;
}
```
c语言对字符串冒泡排序
以下是C语言对字符串进行冒泡排序的示例代码:
```c
#include <stdio.h>
#include <string.h>
void swap(char *x, char *y) {
char temp = *x;
*x = *y;
*y = temp;
}
void bubbleSort(char *str) {
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (str[j] > str[j + 1]) {
swap(&str[j], &str[j + 1]);
}
}
}
}
int main() {
char str[100];
scanf("%s", str);
bubbleSort(str);
printf("%s\n", str);
return 0;
}
```
该代码首先定义了一个`swap`函数,用于交换两个字符的位置。然后定义了一个`bubbleSort`函数,用于对字符串进行冒泡排序。在`main`函数中,首先读取输入的字符串,然后调用`bubbleSort`函数对字符串进行排序,最后输出排序后的结果。