写一个冒泡算法计算一个数组内数据最大最小值
时间: 2023-05-22 22:01:25 浏览: 52
好的,以下是冒泡排序算法的代码,可以计算一个数组内数据的最大值和最小值:
```
#include <stdio.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {3, 5, 1, 7, 2, 4, 6, 8};
int len = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, len);
printf("最小值:%d\n", arr[0]);
printf("最大值:%d\n", arr[len - 1]);
return 0;
}
```
希望能对您有所帮助!
相关问题
编写一个双向冒泡排序算法
双向冒泡排序(又称鸡尾酒排序)是一种改进的冒泡排序,在每一轮排序中,同时从前向后和从后向前进行比较和交换元素,以达到更快的排序效果。以下是一个使用 Python 编写的双向冒泡排序算法:
```python
def cocktailSort(arr):
n = len(arr)
left = 0
right = n - 1
while left < right:
# 从左向右冒泡
for i in range(left, right):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
right -= 1
# 从右向左冒泡
for i in range(right, left, -1):
if arr[i - 1] > arr[i]:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
left += 1
return arr
```
在该算法中,我们使用 `left` 和 `right` 指针来分别表示当前未排序部分的左右边界。每一轮排序时,我们先从左向右冒泡,将最大值放到未排序部分的最右端;然后从右向左冒泡,将最小值放到未排序部分的最左端。重复以上步骤,直到整个数组排序完成。
用java写一个冒泡排序做好注释
以下是用 Java 写的冒泡排序,并加入注释以便理解:
```java
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
// 外层循环控制比较轮数
for (int i = 0; i < n - 1; i++) {
// 内层循环控制每轮比较次数
for (int 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;
}
}
}
}
public static void main(String[] args) {
// 测试用例
int[] arr = {5, 2, 8, 4, 7, 1, 3, 9, 6};
bubbleSort(arr);
// 输出排序后的数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
注释解释:
- `bubbleSort()` 方法是冒泡排序算法的具体实现,接收一个整型数组作为参数。
- `n` 表示数组的长度。
- 外层循环 `for (int i = 0; i < n - 1; i++)` 控制比较轮数,因为每一轮都会将最大值或最小值移到数组的末尾,所以比较轮数为 `n - 1`。
- 内层循环 `for (int j = 0; j < n - i - 1; j++)` 控制每轮比较次数。因为每轮比较都会将最大值或最小值移到数组的末尾,所以每一轮都比上一轮少一个元素需要比较,故比较次数为 `n - i - 1`。
- `if (arr[j] > arr[j+1])` 判断前一个数是否比后一个数大,如果是,则交换两个数的位置。
- `main()` 方法中的测试用例 `int[] arr = {5, 2, 8, 4, 7, 1, 3, 9, 6};` 是一个随机数组。
- `for` 循环输出排序后的数组。