冒泡排序的时间复杂度是O(n^2)✨✨✨✨
以下分别是Java和C++代码实现冒泡排序
package DataStructure;
import java.util.List;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-02-27
* Time: 7:14
*/
public class Sort {
public static void main(String[] args) {
int[] arr={ 4,3,8,9,1,6,7,0,2,5,10 };
System.out.println("原数组如下");
for (int i : arr) {
System.out.print(i+" ");
}
System.out.println();
BubbleSort(arr);
System.out.println("冒泡排序之后的数组");
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void BubbleSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
int flag = 0;
for (int j = 0; j + i + 1 < arr.length; j++) {
if (arr[j] > arr[j + 1]) {
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
//todo 检测是否进行了交换 对冒泡排序进行优化
flag = 1;
}
}
System.out.printf("第%d遍排序后的数组如下\n", i + 1);
for (int i1 : arr) {
System.out.print(i1+" ");
}
System.out.println();
if (flag == 0) {
//说明没有发生交换
break;
}
}
}
}
#include<iostream>
#include<vector>
using namespace std;
void Swap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
void BubbleSort(vector<int>& arr) {
//int flag = 0;
for (int i = 0; i < arr.size()-1; i++) {
int flag = 0;
for (int j = 0; j + i + 1 < arr.size(); j++) {
if (arr[j] > arr[j + 1]) {
Swap(arr[j], arr[j + 1]);
flag = 1;
}
}
printf("第%d遍排序后的数组如下\n", i + 1);
for (auto i : arr) {
std::cout << i << " ";
}
printf("\n");
if (flag == 0) {
//说明没有发生交换
break;
}
}
}
int main() {
vector<int> arr = { 4,3,8,9,1,6,7,0,2,5,10 };
for (auto i : arr) {
std::cout << i << " ";
}
std::cout << std::endl;
BubbleSort(arr);
for (auto i : arr) {
std::cout << i << " ";
}
return 0;
}