#include<stdio.h>
void print_array(int a[], int n) { //遍历数组
for (int i = 1;i <= n;i++) {
printf("%d ", a[i - 1]);
}
printf("\n");
}
void swap(int *a,int *b) { //交换数组中的值
int temp = *a;
*a = *b;
*b = temp;
}
void Bebble_sort(int a[],int n){
for(int i = 1;i<n;i++){ //只需要判断n-1次
int swapped = 0; //优化,当判断剩下的元素发现没有需要交换的即数组有序
for(int j=0;j<n-i;j++){ //只需要检查n-i次,因为每次都会把后面的一项排好序
if(a[j]>a[j+1]){
swap(&a[j],&a[j+1]);
swapped = 1;
}
}
print_array(a,n);
if(swapped==0)break; //优化内容
}
}
int main(void){
int a[]={3,5,2,8,1,4,5,4,3,7,5,4,8,2,3,9,6,10};
Bebble_sort(a,18);
}
冒泡排序也挺简单的。
复杂度O(n²)。
上条博客回复我那个大哥,我真是新手,等我学了树一定去试试你的方法(流泪)