void bubble(int arr[],int len) { int i=0,j=0,tmp=0; for(i=0;i<len-1;i++) { for(j=0;j<len-j;j++) { if(arr[i]>arr[i+1]) { tmp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=tmp; } } } }
时间: 2024-04-29 14:20:04 浏览: 13
这是一个冒泡排序的实现代码,用于对一个整数型数组进行升序排序。其中,参数arr表示待排序的数组,参数len表示数组的长度。函数首先定义了三个整型变量i、j、tmp,i和j用于控制循环过程中的下标,tmp用于交换元素时的中间变量。接着,外层循环对数组进行len-1次遍历,内层循环则对当前遍历到的元素及其后面的所有元素进行比较,如果当前元素大于后面的元素,则交换它们的位置。最后,函数返回已经排序好的数组。
相关问题
使用模块化(用户自定义函数)改写程序 2. 课本91页:自定义冒泡函数,对10个数进行排序 #include<stdio.h> int main() { int a[10],i,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) for(j=0;j<10-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=0;i<10;i++) printf("%d ",a[i]);
可以将冒泡排序过程封装成一个名为 bubble_sort 的函数,代码如下:
```c
#include <stdio.h>
void bubble_sort(int arr[], int len) {
int i, j, tmp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j+1]) {
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
int main() {
int arr[10], i;
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, 10);
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这样做的好处是,将排序过程封装成一个函数可以使代码更加模块化,便于重用和维护。
用C语言编译一下输入一批未排序的数据,数量不超过30个,请使用选择法或者冒泡法对其排序,并按照规定的要求输出。 输入格式: 先输入待排序的整形数的个数;然后输入所有的待排序的数据。 输出格式: 在一行中按照由大到小的顺序输出排序好的数据。注意:最后一个数据后面没有空格。 输入样例: 在这里给出一组输入。例如: 5 -2 52 0 192 35 输出样例: 在这里给出相应的输出。例如: 192 52 35 0 -2
下面是使用选择法对输入数据进行排序的 C 代码实现。
```
#include <stdio.h>
void selection_sort(int arr[], int len)
{
int i, j, max, tmp;
for (i = 0; i < len - 1; i++) {
max = i;
for (j = i + 1; j < len; j++) {
if (arr[j] > arr[max]) {
max = j;
}
}
if (max != i) {
tmp = arr[i];
arr[i] = arr[max];
arr[max] = tmp;
}
}
}
int main()
{
int n, i;
int arr[30];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
selection_sort(arr, n);
for (i = 0; i < n - 1; i++) {
printf("%d ", arr[i]);
}
printf("%d\n", arr[n - 1]);
return 0;
}
```
下面是使用冒泡法对输入数据进行排序的 C 代码实现。
```
#include <stdio.h>
void bubble_sort(int arr[], int len)
{
int i, j, tmp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int n, i;
int arr[30];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, n);
for (i = 0; i < n - 1; i++) {
printf("%d ", arr[i]);
}
printf("%d\n", arr[n - 1]);
return 0;
}
```
这两种算法的时间复杂度都是 O(n^2),但是选择法的交换次数比冒泡法少,所以实际应用中选择法更常用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)