请写一段C代码实现冒泡排序
时间: 2023-09-05 07:04:39 浏览: 105
### 回答1:
#include <stdio.h> int main()
{
int array[100], n, c, d, swap;
printf("请输入元素的个数\n");
scanf("%d", &n);
printf("请输入这 %d 个数\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("排序后的结果是:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);
return 0;
}
### 回答2:
冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素,比较相邻的两个元素,如果他们的顺序错误就把他们交换位置。通过多次遍历,将最大或最小的元素逐渐移动到数组的一端,从而实现排序。
下面是用C语言实现冒泡排序的代码:
```c
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) { // 进行 n-1 轮比较
for (j = 0; j < n-i-1; j++) { // 每一轮比较次数减一
if (arr[j] > arr[j+1]) { // 相邻元素比较
// 交换位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("排序后的数组:\n");
for (int i=0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
首先定义了一个bubbleSort函数,用来实现冒泡排序。然后在主函数main中初始化了一个待排序数组arr,并计算数组长度n。接着调用bubbleSort函数对数组进行排序。最后遍历输出排序后的数组。
运行上述代码,输出结果为:
```
排序后的数组:
11 12 22 25 34 64 90
```
可见,冒泡排序算法能够按照从小到大的顺序成功对数组进行排序。
### 回答3:
冒泡排序是一种简单的排序算法,它通过比较相邻的两个元素并交换它们的位置来排序。遍历数组多次,每一次遍历将最大的元素沉到数组的最后。下面是用C语言实现冒泡排序的代码:
```c
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) { // 遍历 n-1 次
for (j = 0; j < n-i-1; j++) { // 每次遍历将最大的元素沉到最后
if (arr[j] > arr[j+1]) { // 如果当前元素大于下一个元素,则交换它们的位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
以上代码中,`bubbleSort()`函数接受一个整型数组及其长度作为参数,通过嵌套循环实现冒泡排序。在`main()`函数中,我们定义一个测试数组并调用`bubbleSort()`函数进行排序,然后输出排序后的结果。执行程序后,输出结果为:
```
排序后的数组:
11 12 22 25 34 64 90
```
阅读全文