使用泛型冒泡排序方法编写
时间: 2023-10-24 09:21:38 浏览: 84
以下是使用泛型冒泡排序方法的示例Java代码:
```java
public class BubbleSort<T extends Comparable<T>> {
public void sort(T[] array) {
int n = array.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (array[j].compareTo(array[j + 1]) > 0) {
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
```
该泛型类使用了类型参数 `<T extends Comparable<T>>`,表示 `T` 必须实现 `Comparable` 接口,并且只能与同类型比较。在 `sort` 方法中,使用双层循环实现冒泡排序,并使用 `compareTo` 方法比较元素大小,完成排序。
相关问题
使用冒泡排序编写两个泛型方法
好的,以下是使用冒泡排序实现的两个泛型方法:
1. 对数组进行排序
```
public static <T extends Comparable<T>> void bubbleSort(T[] 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].compareTo(arr[j + 1]) > 0) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
此方法接收一个泛型数组,并使用冒泡排序对其进行排序。
2. 对列表进行排序
```
public static <T extends Comparable<T>> void bubbleSort(List<T> list) {
int n = list.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (list.get(j).compareTo(list.get(j + 1)) > 0) {
T temp = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, temp);
}
}
}
}
```
此方法接收一个泛型列表,并使用冒泡排序对其进行排序。注意,这里使用了 `list.get()` 和 `list.set()` 方法来获取和设置列表中的元素。
编写冒泡排序的函数模版,并进行测试。
好的,以下是冒泡排序的函数模板的实现:
```cpp
template<typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
其中,`arr` 表示待排序的数组,`n` 表示数组的长度。函数模板中的 `typename T` 表示泛型类型,可以用于排序任意类型的数组。
下面是一个测试用例:
```cpp
int main() {
int arr[] = { 3, 2, 1, 5, 4 };
int n = sizeof(arr) / sizeof(int);
bubbleSort(arr, n);
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 2 3 4 5
```
可以看到,经过冒泡排序后,数组已经被正确排序。
阅读全文